zoukankan      html  css  js  c++  java
  • Web高级 HTTP报文

    1. 报文结构

    1.1 请求报文结构

    • Start-Line
      单行,包括 Method + URL + HTTP Version
    • Headers
      多行,形式为 Name:Value
    • Body
      可选,主体部分
    Get https://www.baidu.com/ HTTP/1.1
    -------------------------------------------------------------------------------
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6
    Cache-Control: no-cache
    Connection: keep-alive
    Cookie: ...
    Host: www.baidu.com
    Pragma: no-cache
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    

    1.2 响应报文结构

    • Status-Line
      单行,包括 HTTP Version + Status Code + Description
    • Headers
      多行,形式为 Name:Value
    • Body
      可选,主体部分
    HTTP/1.1 200 OK
    -------------------------------------------------------------------------------
    Bdpagetype: 2
    Bdqid: 0xd511e4460001e2c0
    Cache-Control: private
    Connection: Keep-Alive
    Content-Encoding: gzip
    Content-Type: text/html;charset=utf-8
    Date: Mon, 15 Oct 2018 15:34:34 GMT
    Expires: Mon, 15 Oct 2018 15:34:34 GMT
    Server: BWS/1.1
    Set-Cookie: BDSVRTM=223; path=/
    Set-Cookie: BD_HOME=1; path=/
    Set-Cookie: H_PS_PSSID=1434_21124_26350_20928; path=/; domain=.baidu.com
    Strict-Transport-Security: max-age=172800
    Transfer-Encoding: chunked
    X-Ua-Compatible: IE=Edge,chrome=1
    -------------------------------------------------------------------------------
    Body...
    

    2. Http2 伪头部

    2.1. 作用

    与HTTP1.x使用起始行来指定URI,请求方法,状态码等不同, HTTP2使用专门的伪头部来实现此目的(以':'作为开头).
    所有的伪头部必须在常用首部之前出现.

    :authority: developer.mozilla.org
    :method: GET
    :path: /en-US/docs/Web/HTTP/Basics_of_HTTP
    :scheme: https
    Referrer Policy: no-referrer-when-downgrade
    accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    accept-encoding: gzip, deflate, br
    accept-language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,ja;q=0.6
    cache-control: max-age=0
    cookie: ...
    referer: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
    upgrade-insecure-requests: 1
    user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    

    2.2. 连接专用伪头部

    在HTTP2中除了TE头部以外不再有连接相关的头部,包括:Keep-Alive, Proxy-Connection,Transfer-Encoding,和Upgrade等

    2.3. 请求伪头部

    • ':method'伪头部
      对应HTTP1.x起始行中的Method
    • ':scheme'伪头部
      对应HTTP1.x起始行中HTTP Version,值为http或者https
    • ':authority'伪头部
      对应HTTP1.x头部中的Host
    • ':path'伪头部
      对应HTTP1.x起始行中的URL,可以为*或/

    2.4. 响应伪头部

    • ':status'伪头部
      对应HTTP1.x起始行中Status Code

    2. 方法

    • GET | 请求指定的页面信息,并返回实体主体
    • HEAD | 与GET相同, 但仅返回状态和头部
    • POST | 请求服务器对内容进行处理
    • PUT | 从客户端向服务器传送的数据取代指定的文档的内容
    • DELETE | 请求服务器删除指定的资源
    • CONNECT | 要求用隧道协议连接代理(SSL/TLS)
    • OPTIONS | 查询针对请求URI指定资源支持的方法
    • TRACE | 让服务端将之前的请求通信还给客户端

    详情查看[Web高级_Http方法详解]

    3. 头部

    • 一般头: 同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
    • 请求头: 包含更多有关要获取的资源或客户端本身信息的消息头。
    • 响应头: 包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。
    • 实体头: 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。

    详情查看[Web高级_Http头部详解]

    4. 状态码

    • 100-199 信息响应
    • 200-299 成功响应
    • 300-399 重定向
    • 400-499 客户端响应
    • 500-599 服务端响应

    详情查看[Web高级_Http状态码详解]

    refs:
    https://tools.ietf.org/html/rfc2616
    https://tools.ietf.org/html/rfc7540
    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

  • 相关阅读:
    LG7124 [Ynoi2008] stcm【树分治,构造】
    美团杯 2021【杂题】
    UOJ455【UER #8】雪灾与外卖【反悔贪心,模拟费用流】
    js正则匹配正负小数
    iview table 自适应高度
    iview tree render 自定义右键菜单(解决部分场景下官网tree右键菜单bug)
    iTextSharp Image.ScaleToFit自适应缩放简述
    C# 从动态类型中获取集合
    Js自定义日期
    SVN代码统计工具(资源下载+使用命令)
  • 原文地址:https://www.cnblogs.com/full-stack-engineer/p/9926496.html
Copyright © 2011-2022 走看看