1. 程式人生 > >HTTP協議請求欄位與響應欄位

HTTP協議請求欄位與響應欄位

一、請求頭欄位:請求首部欄位是從客戶端到伺服器傳送請求報文中所使用的欄位,裡面包含了附加資訊、客戶端資訊以及對響應內容相關的優先順序等內容。
1、Accept通知伺服器使用者代理可處理的媒體型別及媒體型別的相對優先順序,可使用type/subtype這種形式,一次指定多種媒體型別。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
q表示權重,預設值為1.0,當伺服器提供多種內容時,將會有優先返回權重值最高的媒體型別。
2、Accept-Cherset通知伺服器使用者代理支援的字符集及字符集的相對優先順序,可一次性指定多個字符集。
該首部欄位可用權重q值來表示相對優先順序。該首部欄位應用於內容協商機制的伺服器驅動協商。
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
3、Accept-Encoding告知伺服器使用者代理支援的內容編碼及內容編碼優先順序順序,可一次性指定多種內容編碼。
Accept-Encoding: gzip, deflate
常用的幾種編碼格式:
gizp:由檔案壓縮程式gzip(GUN zip)生成的編碼格式。
compress:由UNIX檔案壓縮程式compress生成的編碼格式。
deflate:組合使用zlib格式及由deflate壓縮格式生成的編碼格式。
jdentity:不執行壓縮或不會變化的預設編碼格式。

這裡可以使用q值表示相對優先順序,也可以使用(*)作為萬用字元,指定任意的編碼格式。
4、Accept-Lanuage告知伺服器使用者代理能夠處理的自然語言集,以及其相對有限集,可一次指定多種自然語言集。同樣可使用權重值q表示相對優先順序。
Accept-Lanuage: zh-cn,zh;q=0.7,en=us,en;q=0.3
5、Authorization告知伺服器使用者代理的認證資訊(證書值)。通常想要通過驗證的使用者代理會在接受到第一次返回的401狀態碼響應後,把首部欄位加入請求中,共用快取接收到含有該欄位的請求時操作處理會有所差異。
6、Expect客戶端使用該欄位告知伺服器,期望出現某種特定行為。
如果伺服器無法理解期望作出迴應而發生錯誤,會返回狀態碼417Expect Failed,客戶端可以利用該欄位,寫明所期望的擴充套件。
http/1.1規範值定義了100-continue。
Expect: 100-continue
7、From告知伺服器使用使用者代理的使用者墊子郵件地址。
目的:顯示搜尋引擎等使用者代理的負責人的電子郵件聯絡方式 。
From: [email protected]
8、Host告知伺服器請求的資源所處的網際網路主機名和埠號。Host首部欄位是在HTTP/1.1規範內唯一一個必須被包含在請求內的首部欄位。
Host: www.baidu.com
9、If-Match格式如If-xxx這樣的請求首部欄位,都可以稱之為條件請求,伺服器收到請求,只有判定條件為真時,才會執行請求。該欄位告知伺服器匹配資源所用的實體標記(ETag)值,這時無法使用弱ETag值。如果判斷條件不為真,則返回412Precondition Failed響應。還可以使用(*)指定If-Match的欄位值,這種情況下伺服器將忽略ETag值,只要資源存在就處理請求。
If-Match: "123456"
10、If-Modified-Since條件請求,告知伺服器若欄位指定值早於資源更新時間,則希望能處理請求,如果在該欄位指定的日期時間大於資源更新時間,則返回304Not Modified響應。用於確認代理或者客戶端擁有的本地資源的有訊息。
If-Modified-Since: Thu, 15 Apr 2004 00:00:00 GMT
11、If-None-Match條件請求,和If-Match作用相反。當該欄位值的實體標記(ETag)值與請求資源的ETag不一致時,告知伺服器處理該請求。在GET或HEAD方法中使用該欄位可獲取最新的資源。
12、If-Range條件請求,告知伺服器若指定的值和請求資源的值一致,則作為範圍請求處理,反之,則返回全部資源。
request:                                                   response:
GET /index.html                                         206 Partial Content
If-Range: "123456"                                    Content-Range: bytes 5001-10000/10000
Range: bytes=5001-10000                        Content-Length:5000
上面的請求和資源匹配一致,那麼就作為範圍請求處理。
13、If-Unmodified-Since條件請求,該欄位和If-Unmodified-Since欄位作用相反,作用是告知伺服器,指定的請求資源只有在欄位值內指定的日期之後,未發生更新的情況下,才能處理請求。如指定時間之後發生更新,則返回412 Precondition  Failed作為響應返回
If-Unmodified-Since: Thu, 03 Jul 2016 00:00:00 GMT
14、Max-Forwards使用http協議通訊時,請求可能會經過代理等多臺伺服器,如果由於某些原因導致請求轉發失敗,那麼客戶端收不到響應,我們對此一無所知。通過TRACE或者OPTIONS方法,傳送包含該欄位的請求時,該欄位以十進位制整數形式指定可經過的伺服器最大數目,簡單來講,就是指定Max-Forwards的值,每經過一次轉發,就-1,當值變為0,直接返回響應。
Max-Forwards: 10
15、Proxy-Authorization收到代理伺服器發來的認證質詢時,客戶端向代理伺服器傳送包含首部欄位的請求,以告知伺服器所需要的認證的資訊。
Proxy-Authorization: Basic dGLwoPNLAGKGFY5
16、Range對於只需獲取部分資源的範圍請求,包含首部欄位Range即可告知伺服器資源的指定範圍。接收到附帶Range欄位的伺服器,會返回206Partial Content的響應;無法處理請求時,則返回200 OK的響應及全部資源。
Range: bytes=5001-10000
17、Referer告知伺服器請求的原始資源的URI。
Referer:www,baidu.com/index.xml
18、TE告知伺服器客戶端能夠處理響應的傳輸編碼方式及相對優先順序。
TE:gzip, deflate;q=0.5
該欄位還可以指定伴隨trailer欄位的分塊傳輸編碼的方式。
TE:trailers
19、User-Agent該欄位會將建立請求的瀏覽器和使用者代理名稱等資訊傳給伺服器。如果由網路爬蟲發起請求,可能會在請求中新增爬蟲作者的墊子郵件地址。因此,如果請求經過代理,那麼中間也很可能被新增上代理伺服器名稱。
User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64; rv13.0) Gecko/=20100101 Firfox/13.0.1
二、響應頭欄位:伺服器向客戶端返回響應報文中所使用的欄位,用於補充的附加資訊、伺服器資訊、以及對客戶端的附加要求等。
1、Accept-Ranges告知客戶端伺服器能否處理範圍請求,以指定獲取伺服器的某部分資源。
可指定的欄位值分2種:
(1)bytes:可處理範圍請求
(2)none:不能處理範圍請求
Accept-Ranges: bytes
2、Age告知客戶端源伺服器建立響應多久了,單位S。若建立響應的是快取伺服器,該欄位指快取後響應再次發起認證到認證完成的時間值,此時,必須加上首部欄位Age。
Age: 600
3、ETag告知客戶端實體標識。這是一種將資源以字串形式做唯一標識的一種方式,伺服器會為沒份資源分配對應的ETag值。另外,當資源更新時,ETag值也需要更新。
ETag: "82e22293907ce725faf67773957acd12"
(1)強ETag值和弱ETag值
強ETag值:不論實體發生多麼細微的變化,都會改變其值。
ETag: "usagi-1234"
弱ETag值:只提示資源是否相同;只有資源發生了根本改變,產生差異才會改變ETag值,此時,會在欄位值最開始處附加W/。
ETag: W/"usagi-1234"
4、Location將響應接受方引導至某個與請求URI位置不同的資源。基本上該欄位都會配合3xx:Redirction的響應,提供重定向的URI
Location: http://www.usagidesign.jp/sample.html
5、Proxy-Authenticate把代理伺服器所要求的認證資訊發給客戶端,他的認證行為在客戶端與代理間進行。
Proxy-Authenticate: basic realm="Usagidesign Auth"
6、Retry-After告知客戶端在多久之後再次傳送請求,主要配合狀態碼503 Service Unavailable響應,或者3XX Redirect響應一起使用。
欄位值可以指定具體的日期時間(Wed, 04 Jul 2012 06: 34: 24 GMT等格式),也可以是建立響應後的秒數。
Retry-After: 120
7、Server告知客戶端當前伺服器上安裝的http伺服器應用程式的資訊。其中包含軟體應用名稱,甚至版本號和安裝時的啟動項。
Server: Apache/2.2.17(Unix)
Server: Apache/2.2.6(Unix) PHP/5.2.5
8、Vary控制快取。源伺服器向代理傳達關於本地快取使用方法的命令。客戶端收到從代理伺服器收到的從源伺服器返回的包含該欄位指定項的響應之後,若再次進行快取,僅對請求中含有相同欄位的請求返回快取。
Vary: Accept-Language
9、WWW-AuthenticateHTTP訪問認證。告知客戶端適用於訪問請求URI所指定資源的認證方案和帶引數提示的查詢。狀態碼401 Unauthorized響應中,肯定包含該欄位。
10、Content-Encoding:伺服器通過這個頭告訴瀏覽器資料的壓縮格式。 
11Content-Length:伺服器通過這個頭告訴瀏覽器回送資料的長度。
12、Content-Type:伺服器通過這個頭告訴瀏覽器回送資料的型別。
13、Last-Modified:告訴瀏覽器當前資源的最後快取時間。 
14、Refresh:告訴瀏覽器隔多久重新整理一次。
15、Content-Disposition:告訴瀏覽器以下載方式開啟資料。 
16、Transfer-Encoding:告訴瀏覽器資料的傳送格式。 
17、狀態行:用於描述伺服器對請求的處理結果。 
18、狀態碼
100~199:表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程。 
200~299:表示成功接收請求並已完成整個處理過程。常用200。 
300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經移動一個新地址、常用302,307和304。
400~499:客戶端的請求有錯誤,常用404(意味著你請求的資源在web伺服器中沒有)403(伺服器拒絕訪問,許可權不夠)。 
500~599:伺服器端出現錯誤,常用500 。
多個響應頭:響應頭用於描述伺服器的基本資訊,以及資料的描述,伺服器通過這些資料的描述資訊,可以通知客戶端如何處理等一會兒它回送的資料。 
三、三種禁止瀏覽器快取的頭欄位: 
Expires:告訴瀏覽器把回送的資源快取多長時間 -1或0則是不快取 。
Cache-Control:no-cache 
Pragma:no-cache 
伺服器通過以上兩個頭,也就是控制瀏覽器不要快取資料 。
實體內容:代表伺服器向客戶端回送的資料。
四、http狀態碼及表示的狀態資訊 
200(正常) 
表示一切正常,返回的是正常請求結果。 
302/307(臨時重定向) 
指出被請求的文件已被臨時移動到別處,此文件的新的URL在Location響應頭中給出。 
304(未修改) 
表示客戶機快取的版本是最新的,客戶機應該繼續使用它。 
403(禁止) 
伺服器理解客戶端請求,但拒絕處理它。通常由於伺服器上檔案或目錄的許可權設定所致。 
404(找不到) 
伺服器上不存在客戶機所請求的資源。 
500(內部伺服器錯誤) 
伺服器端的CGI、ASP、JSP等程式發生錯誤。

相關推薦

HTTP協議請求響應

一、請求頭欄位:請求首部欄位是從客戶端到伺服器傳送請求報文中所使用的欄位,裡面包含了附加資訊、客戶端資訊以及對響應內容相關的優先順序等內容。1、Accept:通知伺服器使用者代理可處理的媒體型別及媒體型別的相對優先順序,可使用type/subtype這種形式,一次指定多種媒

HTTP請求報文解析 響應報文解析 、 HTTP請求報文中 GET 和 POST的區別 和 URL解析

一、什麼是HTTP? HTTP是超文字傳輸協議 二、HTTP特點? (1)HTTP是無狀態協議; (2)HTTP是web服務使用的協議; (3)HTTP是基於TCP協議的; (4)HTTP的通訊方式是客戶端-伺服器模式,即C/S

Http協議請求響應

瀏覽器請求頭: 例如: GET /quality.php 請求行processID=ja_7_1595971763&vid=89625156&uid=0&pid=1&plid=4006&totalSize=&firstSize=null&firstTim

http協議基礎(九)響應首部

響應首部欄位: 伺服器向客戶端返回響應報文中所使用的欄位,用於補充的附加資訊、伺服器資訊、以及對客戶端的附加要求等 1、Accept-Ranges 告知客戶端伺服器能否處理範圍請求,以指定獲取伺服器的某部分資源 可指定的欄位值分2種: 1.1   bytes:可處理範圍請求 1.2 &n

Http請求響應

用於HTTP請求中的常用請求頭欄位 Accept:用於高速伺服器,客戶機支援的資料型別 Accept-Charset:用於告訴伺服器,客戶機採用的編碼格式 Accept-Encoding:用於告訴伺服器,客戶機支援的資料壓縮格式 Accept-Lang

初識HTTP協議--請求響應報文

HTTP相信大家都知道這個詞,我們也都知道它是要幹嘛的,以前的我也一直只是知道它就是基於TCP/IP協議為瀏覽器和伺服器提供的一個通訊協議標準,可以是GET、POST方式,可以通過telnet的方法 來發送一個HTTP請求並得到返回的內容,預設埠是80啊等等。最近也不知道出

http協議請求響應過程

基於http協議的請求與響應過程 問題:使用者在瀏覽器位址列中輸入了一個網址之後,發生了哪些事情 (1)瀏覽器對使用者輸入的(request)請求,通過DNS(域名解析)進行解析,解析獲得(協議,ip地址(埠號),檔案路徑) (2)通過解析的ip地址向伺服器傳送

HTTP協議--請求響應報文格式

請求報文格式 HTTP1.0版本只支援GET、POST、HEAD三種方法,後來發展到HTTP1.1,1.1版本額外支援PUT、DELETE方法。 HEAD方法類似於GET方法。當伺服器接收到一個HEAD方法的請求時,會用一個HTTP報文進行響應。HEAD

HTTP協議請求響應格式內容詳解

Location:配合302,找該位置請求資源(請求重定向)Server: Microsoft-IIS/5.0Date: Thu, 13 Jul 2000 05:46:53 GMTContent-Encoding: gzip伺服器壓縮格式,  Content-Length:2291  資料大小Content-

Logstash 配置elasticsearch index表中欄重複的問題

input{ file{ path => ["/tmp/data/t_url.csv"] start_position =>"beginning" } } filter{ csv{ separator =

HTTP協議請求響應模型

場景:登入 1.客戶端發起請求到api介面    1.1使用者在客戶端填寫使用者名稱和密碼,點選登入,傳送請求 2.api接收到客戶端發起的使用者請求    2.1 api對業務邏輯進行驗證       2.1.1驗證使用者名稱和密碼是否合法            比如:使用者名稱要求必須為真實手機號碼(1

[oracle] count()函式使用錯誤導致的查詢失敗(聚合函式聚合分組不一致)

一 錯誤的SQL語句(原始的,格式是直接從word中拷貝的,存在多個錯誤): select to_char(t.fbsj, 'YYYY') as a, count(t.fbsj) from ( select fbsj from ods_t_ky_lw     where

JavaWeb中的Http協議請求響應

1:HTTP的定義 HTTP是hypertext transfer protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議 用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程 客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需

Mybatis_插入資料後返回主鍵ID_返回資料類中欄相對應

目的:利用mapper 向資料庫中插入記錄,並返回主鍵ID  注意返回資料的名字需要與類中欄位相對應上 若不對應上會出現以下錯誤: JavaBean XXXMapper.xml中的SQL  正

Http協議請求響應

一、基本的知識點 Http協議:Hyper Text Transfer Protocol (超文字傳輸協議)。主要用於從全球資訊網(www)伺服器傳輸超文字到本地瀏覽器的傳輸協議。它基於ICP/IP通訊來傳輸協議資料(圖片,HTML,查詢結果等)。 工作原理:http協議

http協議請求,get和post的區別聯絡

                 網路通訊中HTTP協議詳解 一、什麼是HTTP協議     HTTP協議全稱:HyperText Transfer Protocol 是一種超文字傳輸協議,通過UR

Http協議請求響應模型(一次請求的生命週期或簡單的軟體分層)

場景:登入 1、客戶端發起請求到api介面層 1.1使用者在客戶端填寫使用者名稱和密碼,點選登入,傳送請求 2、api接收到客戶端發起的使用者請求 2.1 api對業務邏輯進行驗證 2.1.1 驗證使用者名稱和密碼是否合法 比如:使用者名稱要求必須為真實手機號碼   11位

http協議 請求報文和響應報文

引用 學習Web開發不好好學習HTTP報文,將會“打拳不練功,到老一場空”,你花在犯迷糊上的時間比你沉下心來學習HTTP的時間肯定會多很多。 HTTP請求報文解剖HTTP請求報文由3部分組成(請求行+請求頭+請求體): 下面是一個實際的請求報文: ①是請求方法,GET和

Http協議請求頭、響應頭、響應

必須 響應 coo tab ron 內部錯誤 serve 接口 body Http部分請求頭 Accept 客戶機通過這個頭,告訴服務器,它支持哪些數據類型 Accept-Charset 客戶機通過這個頭,告訴服務器,它支持的編碼 Accept-Encoding

Http協議請求響應詳解

http://hi.baidu.com/aimilin/blog/item/100739cb96783c9ac9176882.html http://hi.baidu.com/javazyw/blog/item/fad0ee3d3704cef1828b132d.html