• HTTP协议


    一、概念

    ​ HTTP协议(超文本传输协议)规定了客户端浏览器和服务器通信时发送数据的格式。HTTP协议使用TCP连接。通信开始时,首先在浏览器和服务器之间建立TCP连接,接着浏览器向服务器发送HTTP请求报文,服务器在收到该请求报文后向服务器发送HTTP响应报文,最后当通信结束后,释放TCP连接。

    特点:

    1. 默认端口号:80
    2. 基于请求/响应模型:即一次请求对应一次响应
    3. 无状态的:即每次的请求之间是相互独立的,不能交换数据

    历史版本:

    ​ 1.0:每一次的请求响应都会建立新的连接,通信结束后释放连接,效率较低。

    ​ 1.1:可以复用连接,提高了效率。

    二、请求报文数据格式

    1. 请求行

      格式:请求方式 请求url 请求协议/版本(举例:GET /login.html HTTP/1.1)

      【注】HTTP协议有7种请求方式,常见的有2种,GET和POST。

    ​ GET:请求参数在请求行中,在url后;请求的url长度是有限制的;不太安全。

    ​ POST:请求参数在请求体中;请求的url长度时没有限制的(适用于文件的上传);相对安全。

    1. 请求头

      格式: 请求头名称:请求头值

      常见的请求头:

      ​ User-Agent:该请求头中的值为此次访问服务器使用的浏览器版本信息。这样可以在服务器端获取该头的信息,从而解决浏览器的兼容性问题。

      ​ Referer:http://localhost/login.html 告诉服务器,我(当前请求)从哪里来?可以用来防盗链和做统计工作。

    2. 请求空行

      空行,就是用于分割POST请求的请求头和请求体的。

    3. 请求体(正文)

      封装了POST请求消息的请求参数。比如:username=zhangsan

    一个完整的请求报文例子:

    POST /login.html HTTP/1.1
    Host: localhost
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Referer: http://localhost/login.html
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    
    username=zhangsan
    

    三、响应报文数据格式

    1. 响应行

      格式:协议/版本 响应状态码 状态码描述

      【注】响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。状态码都是3位数字。常见的状态码有以下几类:

      • 1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码
      • 2xx:成功。代表:200
      • 3xx:重定向。代表:302(重定向),304(访问缓存)
      • 4xx:客户端错误。代表:404(请求路径没有对应的资源),405(请求方式没有对应的doXxx方法)
      • 5xx:服务器端错误。代表:500(服务器内部出现异常)
    2. 响应头

      格式: 响应头名称:响应头值

      常见的响应头:

      ​ Content-Type:服务器告诉客户端浏览器本次响应体的数据格式以及编码格式。

      ​ Content-disposition:服务器告诉客户端浏览器要以什么样的方式打开响应体数据。

      ​ 值:

      ​ in-line:默认值,在当前页面内打开。

      ​ attachment;filename=xxx:以附件形式打开响应体。文件下载。

    3. 响应空行

    4. 响应体

      封装了服务器发送给客户端浏览器的数据。

    一个完整的响应报文例子:

    HTTP/1.1 200 OK
    Content-Type: text/html;charset=UTF-8
    Content-Length: 101
    Date: Wed, 06 Jun 2018 07:08:42 GMT
    
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <body>
      	hello,response!
      </body>
    </html>
    
  • 相关阅读:
    最长公共子序列
    小测试 炒书
    洛谷P1968 美元汇率
    洛谷P3611 [USACO17JAN]Cow Dance Show奶牛舞蹈
    【刷题】【树】【模拟】树网的核
    【刷题】【dp】地精的贸易
    【刷题】【模拟】复制cs
    【刷题】【模拟】3n+1
    【刷题】【dp】中国象棋
    【刷题】【搜索】新数独
  • 原文地址:https://www.cnblogs.com/jiajun107/p/12965706.html
Copyright © 2020-2023  润新知