1. 程式人生 > >http訊息報頭

http訊息報頭

========================================================
http請求報頭 是如何生成的,主要有三種情況:
 1.瀏覽器自動生成的請求。絕大部分正常使用者訪問都是這類情況,只要是使用者主動輸入網址訪問時傳送的http請求,那這些頭部欄位都是瀏覽器自動生成的,比如host,cookie,user-agent, Accept-Encoding:等。
2.瀏覽器外掛,javascript指令碼增加或者修改的header。JS能夠控制瀏覽器發起請求,也能在這裡增加一些header,但是考慮到安全和效能的原因,對JS控制 header的能力做了一些限制,比如host和cookie, user-agent等這些欄位,JS是無法干預的。
3.中間代理。如果使用者請求要經過一些中間代理(比如運營商或者公司閘道器),中間代理能夠檢視和修改使用者的全部資料,任何頭部欄位。除非我們使用了HTTPS。
=========================================================
 HTTP訊息報頭包括普通報頭、請求報頭、響應報頭、實體報頭這四大類。 
每一個 報頭域 都是由 名字+冒號+空格+值 組成,訊息報頭域的名字不區分大小寫。它們的作用是描述 客戶端或者伺服器 的屬性
1.普通報頭:即可用於請求,也可用於響應,是作為一個整體而不是特定資源與事務相關聯。
2.請求報頭:允許客戶端傳遞關於自身資訊和希望的響應形式。
3.響應報頭:允許伺服器傳遞關於自身資訊的響應。
4.實體報頭:定義被傳送資源的資訊。即可用於請求,也可用於響應。
  詳細介紹:
1、普通報頭 (General Header)
 在普通報頭中,有少數報頭域用於所有的請求和響應訊息,但並不用於被傳輸的實體,只用於傳輸的訊息對請求頭域的擴充套件要求通訊雙方都支援,如果存在不支援的請求頭域,一般將會作為實體頭域處理
Cache-Control
Connection
Date
Pragma
Transfer-Encoding
Upgrade
Via
  2、請求報頭 (Request Headers)
請求報頭允許客戶端向伺服器端傳遞請求的附加資訊以及客戶端自身的資訊對請求頭域的擴充套件要求通訊雙方都支援,如果存在不支援的請求頭域,一般將會作為實體頭域處理
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Host
User-Agent
From
If-Modified-Since
If-Match
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
3、響應報頭 (Response Headers)
響應報頭允許伺服器傳遞不能放在狀態行中的附加響應資訊,以及關於伺服器的資訊和對Request-URI所標識的資源進行下一步訪問的資訊對響應頭域的擴充套件要求通訊雙方都支援,如果存在不支援的響應頭域,一般將會作為實體頭域處理
Location
Server
WWW-Authenticate
Age
Proxy-Authenticate
Public
Retry-After
Vary
Warning
4、實體報頭 (Entity Header)
 請求和響應訊息都可以傳送一個實體。一個實體由實體報頭域和實體正文組成,但並不是說實體報頭域和實體正文要在一起傳送,可以只發送實體報頭域。實體報頭定義了關於實體正文(eg:有無實體正文)和請求所標識的資源的元資訊
Content-Encoding
Content-Language
Content-Length
Content-Type
Last-Modified
Expires
Allow
Content-Base
Content-Location
Content-MD5
Content-Range
Etag
extension-header

Accept客戶端可以處理的媒體型別,按優先順序排序,在一個以逗號為分隔的列表中,可以定義多種型別和使用萬用字元。

  Accept: image/jpeg,image/png,*/*

Accept-Language客戶端接受的語言列表。

          Accept-Language: zh-cn,zh;q=0.5
Accept-Ranges 一個響應頭標,它允許伺服器指明:將在給定的偏移和長度處,為資源組成部分的接受請求。  該頭標的值被理解為請求範圍的度量單位。   
         Accept-Ranges: bytes
         Accept-Ranges: none
Accept-Encoding 客戶端編碼。
         Accept-Encoding: gzip,deflate
Accept-Charset 客戶端可以處理的字符集,按優先順序排序,在一個以逗號為分隔的列表中,可以定義多種型別和使用萬用字元。
         Accept-Charset: iso-8859-1,*,utf-8  
Age 允許伺服器規定自伺服器生成該響應以來所經過的時間長度,以秒為單位。  該頭標主要用於快取響應。 
        Age: 30
Allow 一個響應頭標,它定義一個由位於請求URI中的次源所支援的HTTP方法列表。 
        Allow: GET,PUT  
Authorization 一個響應頭標,用於定義訪問一種資源所必需的授權(域和被編碼的使用者ID與口令)。  
        Authorization: Basic YXV0aG9yOnBoaWw=  
Cache-Control 快取機制.在請求訊息或響應訊息中設定 Cache-Control並不會修改另一個訊息處理過程中的快取處理過程。 請求時的快取指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached, 響應訊息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。  
         Cache-Control: max-age=3600  
各個訊息中的指令含義如下:
    Public 指示響應可被任何快取區快取。
    Private 指示對於單個使用者的整個或部分響應訊息,不能被共享快取處理。  這允許伺服器僅僅描述當用戶的部分響應訊息,此響應訊息對於其他使用者的請求無效。
    no-cache 指示請求或響應訊息不能快取
    no-store 用於防止重要的資訊被無意的釋出。在請求訊息中傳送將使得請求和響應訊息都不使用快取。
    max-age 指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。
    min-fresh 指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。
    max-stale 指示客戶機可以接收超出超時期間的響應訊息。  如果指定max-stale訊息的值,那麼客戶機可以接收超出超時期指定值之內的響應訊息。
Content-Length 表示實際傳送的位元組數  只有當瀏覽器使用持久HTTP連線時才需要這個資料
Content-Encoding 文件的編碼(Encode)方法。只有在解碼之後才可以得到Content-Type頭指定的內容型別。  利用gzip壓縮文件能夠顯著地減少HTML文件的下載時間  
Connection 是否儲存socket連線為開放。   
     Connection: close
     Connection: keep-alive  
Cookie      網站cookie  
          Cookie: PHPSESSID=d2f86046854e13ca02d9eef6c2dcb826  
Content-Type  用於向接收方指示實體的介質型別(就是伺服器返回給客戶端的資源是什麼型別的)   
         Content-Type: text/html 
Content-Base 一種定義基本URI的實體頭標,為了在實體範圍內解析相對URLs。如果沒有定義Content-Base頭標解析相對URLs,使用Content-Location URI(存在且絕對)或使用URI請求。   
          Content-Base: Http://www.myweb.com  
Content-Location 指定包含於請求或響應中的資源定位(URI)。  對URL也作為被解析實體的相對URL的出發點。 
          Content-Location: http://www.myweb.com/news  
Content-MD5 實體的一種MD5摘要,用作校驗和。傳送方和接受方都計算MD5摘要,接受方將其計算的值與此頭標中傳遞的值進行比較。 
Content-Range 隨部分實體一同傳送;標明被插入位元組的低位與高位位元組偏移,也標明此實體的總長度。
         Content-Range: 1001-2000/5000
Date
         Date頭域表示訊息傳送的時間,時間的描述格式由rfc822定義。
         Date描述的時間表示世界標準時,換算成本地時間,需要知道使用者所在的時區   
         Date: Fri, 05 Dec 2008 03:17:21 GMT  
Expires 指定實體的有效期, 過期時間   
         Expires: Mon,05 Dec 2008 12:00:00 GMT  
ETag 一種實體頭標,它向被髮送的資源分派一個唯一的識別符號。對於可以使用多種URL請求的資源,ETag可以用於確定實際被髮送的資源是否為同一資源。   
         ETag: '208f-419e-30f8dc99'  
Form 一種請求頭標,給定控制使用者代理的人工使用者的電子郵件地址。   
        From:
[email protected]
 
Host 被請求資源的主機名。對於使用HTTP/1.1的請求而言,此域是強制性的。   
         Host: www.myweb.com  
If-Modified-Since 記錄頁面最後修改時間,客戶端往伺服器傳送
        If-Modified-Since: Wed, 03 Dec 2008 03:39:18 GMT  
If-Unmodified-Since 只有自指定的日期以來,被請求的實體還不曾被修改過,才會返回此實體。
         If-Unmodified-Since: Mon,10PR 18:42:51 GMT
If-Match 如果包含於一個請求,指定一個或者多個實體標記。只發送其ETag與列表中標記區配的資源。
         If-Match: '208f-419e-308dc99'  
If-None-Match 資源的ETag不與列表中的任何一個條件匹配,操作才執行。   
                    If-None-Match: "502d78280-2cc2-45d1c30522580"  
If-Range           指定資源的一個實體標記,客戶端已經擁有此資源的一個拷貝。必須與Range頭標一同使用。  如果此實體自上次被客戶端檢索以來,還不曾修改過,那麼伺服器只發送指定的範圍,否則它將傳送整個資源。
         Range: byte=0-499
       If-Range: '208f-419e-30f8dc99'  
Keep-Alive 持續連線,出現後繼請求時,避免建立或者重新建立連線。   
           Keep-Alive: 300  
Last-Modified 指定被請求資源上次被修改的日期和時間。   
             Last-Modified: Mon,10PR 18:42:51 GMT  
Location 對於一個已經移動的資源,用於重定向請求者至另一個位置。  與狀態編碼302(暫時移動)或者301(永久性移動)配合使用。   
           Location: http://www2.myweb.com/index.jsp  
Max-Forwards 一個用於TRACE方法的請求頭標,以指定代理或閘道器的最大數目,該請求通過閘道器才得以路由。 在通過請求傳遞之前,代理或閘道器應該減少此數目。   
           Max-Forwards: 3  
Pragma 用來包含實現特定的指令,最常用的是Pragma:no-cache。  在HTTP/1.1協議中,它的含義和Cache-Control:no-cache相同  
Proxy-Authenticate 類似於WWW-Authenticate,便是有意請求只來自請求鏈(代理)的下一個伺服器的認證。   
           Proxy-Authenticate: Basic realm-admin  
Proxy-Proxy-Authorization 類似於授權,但並非有意傳遞任何比在即時伺服器鏈中更進一步的內容。 
            Proxy-Proxy-Authorization: Basic YXV0aG9yOnBoaWw=  
Public 列表顯示伺服器所支援的方法集。
  Public: OPTIONS,MGET,MHEAD,GET,HEAD  
Range 指定一種度量單位和一個部分被請求資源的偏移範圍。   
             Range: bytes=206-5513  
Refener 一種請求頭標域,標明產生請求的初始資源。對於HTML表單,它包含此表單的Web頁面的地址。   
             Refener: http://www.myweb.com/news/search.html  
Retry-After 一種響應頭標域,由伺服器與狀態編碼503(無法提供服務)配合傳送,以標明再次請求之前應該等待多長時間。 此時間即可以是一種日期,也可以是一種秒單位。  
            Retry-After: 18  
Server 伺服器名字   
            Server: Apache/2.2.9 (Win32) PHP/5.2.6  
Transfer-Encoding 一種通用頭標,標明對應被接受方反向的訊息體實施變換的型別 ,當不能預先確定報文體的長度時,不可能在頭中包含Content-Length域來指明報文體長度,此時就需要通過Transfer-Encoding域來確定報文體長度。通常情況下,Transfer-Encoding域的值應當為chunked,表明採用chunked編碼方式來進行報文體的傳輸。
chunked編碼是HTTP/1.1 RFC裡定義的一種編碼方式,因此所有的HTTP/1.1應用都應當支援此方式。 chunked編碼的基本方法是將大塊資料分解成多塊小資料,每塊都可以自指定長度  
       Transfer-Encoding: chunked  
User-Agent 使用者瀏覽器資訊,定義用於產生請求的軟體型別(典型的如Web瀏覽器)
        User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
Upgrade 允許伺服器指定一種新的協議或者新的協議版本,與響應編碼101(切換協議)配合使用。
       Upgrade: HTTP/2.0  
Vary 用於表示使用伺服器驅動的協商從可用的響應表示中選擇響應實體   
       Vary: Accept-Encoding  
Via 一個包含所有中間主機和協議的通用頭標,用於滿足請求。   
       Via: 1.0 fred.com, 1.1 wilma.com  
Warning 用於提供關於響應狀態補充資訊的響應頭標。   
       Warning: 99 www.myweb.com Piano needs tuning  
www-Authenticate 一個提示使用者代理提供使用者名稱和口令的響應頭標,與狀態編碼401(未授權)配合使用。響應一個授權頭標。   
       www-Authenticate: Basic realm=zxm.mgmt  
X-Cache 表示 http request 是由 proxy server 回的
MISS 表示 proxy 代理
HIT 表示 proxy 直接回應
 
 
 
 

相關推薦

http訊息報頭

======================================================== http請求報頭 是如何生成的,主要有三種情況:  1.瀏覽器自動生成的請求。絕大部分正常使用者訪問都是這類情況,只要是使用者主動輸入網址訪問時傳送的htt

HTTP協議訊息報頭,MIME

HTTP請求由三部分組成,分別是: 請求行,訊息報頭,請求正文。 請求行(格式): Method Request-URI HTTP-Version CRLF Method:方法。  GET     請求獲取由Request-URI所標識的資源。  POST 在Request

HTTP協議之訊息報頭

   HTTP訊息由客戶端到伺服器的請求和伺服器到客戶端的響應組成。請求訊息和響應訊息都是由開始行(對於請求訊息,開始行就是請求行,對於響應訊息,開始行就是狀態行),訊息報頭(可選),空行(只有CRLF的行),訊息正文(可選)組成。     HTTP訊息報頭包括普通報頭、請求

HTTP 請求報頭詳解

http服務 o-c redirect pixel authorize 和數 不用 單位 方式 HTTP頭字段包括4類: general-header ; request-header ; response-header ; enti

Unity Http 訊息傳送與接受

參考: https://blog.csdn.net/mseol/article/details/54138762 https://blog.csdn.net/h570768995/article/details/50386935 https://stackoverflow.com/que

PHP規範PSR7(HTTP訊息介面)事例

3. Interfaces 3.1 Psr\Http\Message\MessageInterface <?php namespace Psr\Http\Message; /** * HTTP messages consist of requests from a client t

PHP規範PSR7(HTTP訊息介面)介紹(三)

1.5 服務端請求 RequestInterface提供HTTP請求訊息的一般表示。但是,由於伺服器端環境的性質,伺服器端請求需要額外的處理。伺服器端處理需要考慮通用閘道器介面(CGI),更具體地說,需要考慮PHP通過其伺服器API(SAPI)對CGI的抽象和擴充套件。 PHP通過超級全域性提供

PHP規範PSR7(HTTP訊息介面)介紹(二)

1.3 流 HTTP訊息由起始行,標題和正文組成。 HTTP訊息的主體可能非常小或非常大。嘗試將訊息正文表示為字串很容易消耗比預期更多的記憶體,因為正文必須完全儲存在記憶體中。嘗試將請求或響應的主體儲存在記憶體中將阻止使用該實現能夠使用大型訊息體。 StreamInterface用於在讀取或寫入

PHP規範PSR7(HTTP訊息介面)介紹(一)

本文件描述了RFC 7230和RFC 7231中描述的用於表示HTTP訊息的公共介面,以及RFC 3986中描述的用於HTTP訊息的URI。 HTTP訊息是Web開發的基礎。 Web瀏覽器和HTTP客戶端(如cURL)建立傳送到Web伺服器的HTTP請求訊息,Web伺服器提供HTTP響應訊息。伺服器

深入理解HTTP訊息頭(一)

初識HTTP訊息頭     但凡搞 WEB 開發的人都離不開HTTP(超文字傳輸協議),而要了解HTTP,除了HTML本身以外,還有一部分不可忽視的就是HTTP訊息頭。 做 過Socket程式設計的人都知道,當我們設計一個通訊協議時,“訊息頭/訊息

HTTP訊息頭中的“Cache-control”控制網頁的快取

網頁的快取是由HTTP訊息頭中的“Cache-control”來控制的,常見的取值有private、no- cache、max-age、must-revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況: (1) 開啟新視窗 值為pri

HTTP請求方法與HTTP訊息結構

HTTP是基於客戶端/服務端(C/S)的架構模型,通過一個可靠的連結來交換資訊,是一個無狀態的請求/響應協議。 一個HTTP"客戶端"是一個應用程式(Web瀏覽器或其他任何客戶端),通過連線到伺服器達到向伺服器傳送一個或多個HTTP的請求的目的。 一個HTTP"伺服器"同樣也是一個應用程式(通常是一個Web

Java Socket傳送與接收HTTP訊息簡單實現

  在上次Java Socket現實簡單的HTTP服務我們實現了簡單的HTTP服務,它可以用來模擬HTTP服務,用它可以截獲HTTP請求的原始碼流,讓我們很清楚的瞭解到我們向服務發的HTTP訊息的結構,對HTTP請求訊息有個清晰的認識。這一節我想寫了一個客戶的程式,就是用來

Java socket模擬傳送和接收HTTP訊息

理解:模擬登陸指定網站,登陸成功後,獲取返回串中的cookie值用於發起下次請求。 package demo.http.client; import java.io.IOException; import java.io.InputStream; import java.

Jsoup 爬取頁面的資料和 理解HTTP訊息

推薦一本書:黑客攻防技術寶典.Web實戰篇  ;       順便留下一個疑問:是否能通過jsoup大量併發訪問web或者小型域名伺服器,使其癱瘓?其實用jsoup熟悉的朋友可以用它解析url來幹一件很無恥的事(原始碼保密)。呵呵,接下來簡單的介紹下JSOUP。       jsoup 是一款基於J

理解HTTP訊息頭 (二)

GET/ HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel,application/vnd.ms-powerp

理解HTTP訊息頭【很完整,例子也很豐富】

但凡搞WEB開發的人都離不開HTTP(超文字傳輸協議),而要了解HTTP,除了HTML本身以外,還有一部分不可忽視的就是HTTP訊息頭。 做過Socket程式設計的人都知道,當我們設計一個通訊協議時,“訊息頭/訊息體”的分割方式是很常用的,訊息頭告訴對方這個訊息是幹什麼的,訊息體告訴對方怎麼幹。HTTP傳輸的

http協議報頭Cache-Control使用

最近,複習了下http協議。這裡主要回憶分享,學習下報頭中的Cache-Control的使用情況。 和Cache-Control一起使用的報頭屬性還有:Last-Modified: [UTC time]、ETag: [custom flag] 首先說明下Cache-Cont

教你玩轉HTTP訊息結構

HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全

Spring Boot專案中如何定製HTTP訊息轉換器

在構建RESTful資料服務過程中,我們定義了controller、repositories,並用一些註解修飾它們,但是到現在為止我們還沒執行過物件的轉換——將java實體物件轉換成HTTP的資料輸出流。 Spring Boot底層通過HttpMessageConverters和Jackson庫將Java實體