HTTP的協議頭內容的認識

caoweiju發表於2018-11-06

http協議

HTTP協議(HyperText Transfer Protocol,超文字傳輸協議)是因特網上應用最為廣泛的一種網路傳輸協議,所有的WWW檔案都必須遵守這個標準。

HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等

http報文

  1. 客戶端請求 request
    客戶端傳送一個HTTP請求到伺服器的請求訊息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成,下圖給出了請求報文的一般格式。

    • 格式
      圖片描述

      GET /hello.txt HTTP/1.1
      User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
      Host: www.example.com
      Accept-Language: en, mi
  2. 服務端響應 response
    HTTP響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。

    • 格式
      圖片描述

      HTTP/1.1 200 OK
      Date: Mon, 27 Jul 2009 12:28:53 GMT
      Server: Apache
      Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
      ETag: "34aa387-d-1568eb00"
      Accept-Ranges: bytes
      Content-Length: 51
      Vary: Accept-Encoding
      Content-Type: text/plain

http頭部

HTTP 訊息頭允許客戶端和伺服器透過 request和 response傳遞附加資訊。一個請求頭由名稱(不區分大小寫)後跟一個冒號“:”,冒號後跟具體的值(不帶換行符)組成。該值前面的引導空白會被忽略。
自定專用訊息頭可透過'X-' 字首來新增;但是這種用法被IETF在2012年6月釋出的 RFC5548 中明確棄用,原因是其會在非標準欄位成為標準時造成不便;其他的訊息頭在 IANA 登錄檔 中列出, 其原始內容在 RFC 4229 中定義。 此外,IANA 還維護著被提議的新HTTP 訊息頭登錄檔.
根據不同上下文,可將訊息頭分為:
一般頭: 同時適用於請求和響應訊息,但與最終訊息主體中傳輸的資料無關的訊息頭。
請求頭: 包含更多有關要獲取的資源或客戶端本身資訊的訊息頭。
響應頭: 包含有關響應的補充資訊,如其位置或伺服器本身(名稱和版本等)的訊息頭。
實體頭: 包含有關實體主體的更多資訊,比如主體長(Content-Length)度或其MIME型別。

頭部值如下:

  • Accept
    告訴WEB伺服器自己接受什麼介質型別,/ 表示任何型別,type/* 表示該型別下的所有子型別,type/sub-type。
  • Accept-Charset
    瀏覽器申明自己接收的字符集
  • Accept-Encoding
    瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支援壓縮,支援什麼壓縮方法(gzip,deflate)
  • Accept-Language
    瀏覽器申明自己接收的語言

語言跟字符集的區別:中文是語言,中文有多種字符集,比如big5,gb2312,gbk等等。

  • Accept-Ranges
    WEB伺服器表明自己是否接受獲取其某個實體的一部分(比如檔案的一部分)的請求。bytes:表示接受,none:表示不接受。
  • Access-Control-Allow-Credentials
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Origin
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Age
  • Allow
  • Alt-Svc [我來譯!]
  • Authorization
  • Cache-Control
  • Clear-Site-Data
  • Connection
  • Content-Disposition
  • Content-Encoding
  • Content-Language
  • Content-Length
  • Content-Location
  • Content-Range
  • Content-Security-Policy
  • Content-Security-Policy-Report-Only
  • Content-Type
  • Cookie
  • Cookie2
  • DNT
  • Date
  • ETag
  • Early-Data [我來譯!]
  • Expect
  • Expect-CT
  • Expires
  • Feature-Policy [我來譯!]
  • Forwarded
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Index [我來譯!]
  • Keep-Alive
  • Large-Allocation
  • Last-Modified
  • Location
  • Origin
  • Pragma
  • Proxy-Authenticate
  • Proxy-Authorization
  • Public-Key-Pins
  • Public-Key-Pins-Report-Only
  • Range
  • Referer
  • Referrer-Policy
  • Retry-After
  • Sec-WebSocket-Accept [我來譯!]
  • Server
  • Server-Timing [我來譯!]
  • Set-Cookie
  • Set-Cookie2
  • SourceMap
  • HTTP Strict Transport Security
  • TE
  • Timing-Allow-Origin
  • Tk
  • Trailer
  • Transfer-Encoding
  • Upgrade-Insecure-Requests
  • User-Agent
  • Vary
  • Via
  • WWW-Authenticate
  • Warning
  • X-Content-Type-Options
  • DNS 預讀取
  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Forwarded-Proto
  • X-Frame-Options 響應頭
  • X-XSS-Protection

https://www.jianshu.com/p/6e8...
https://www.cnblogs.com/s3131...

相關文章