HTTP頭部和狀態碼詳解

2021-09-24 12:24:34 字數 3726 閱讀 5374

http報文的組成部分:對報文進行描述的起始行、包含屬性的頭部塊、可選的,包含資料的主體部分

1、起始行:所有的http報文都以乙個起始行作為開始。請求報文的起始行說明了要做些什麼。響應報文的起始行說明發生了什麼。

請求報文的起始行:該行包含了乙個方法和乙個請求的url,還包含http 的版本。

響應報文的起始行:該行包含了響應報文使用的http版本、數字狀態碼、原因短語。

2、頭部:http首部欄位向請求和響應報文中新增了一些附加資訊。本質上來說,它們只是一些名/值對的列表。頭部和協議配合工作,共同決定了客戶端和伺服器能做什麼事情。

頭部的分類:

connection:允許客戶端和伺服器指定與請求/響應連線有關的選項

date:提供日期和時間標誌,說明報文是什麼時間建立的

mime-version:給出了傳送端使用的mime版本

trailer:如果報文採用了分塊傳輸編碼方式,就可以用這個首部列出位於報文拖掛部分的首部集合

transfer-encoding:告知接收端為了保證報文的可靠傳輸,對報文採用了什麼編碼方式

update:給出了傳送端可能想要「公升級」使用的新版本或協議

via:顯示了報文經過的中間節點(**、閘道器)

cache-control:用於隨報文傳送快取指示

請求頭部:請求頭部是只在請求報文中有意義的頭部。用於說明是誰或什麼在傳送請求、請求源自何處,或者客戶端的喜好及能力

host:給出了接收請求的伺服器的主機名和埠號

referer:提供了包含當前請求uri的文件的url

ua-color:提供了與客戶端顯示器的顯示顏色有關的資訊

ua-cpu:給出了客戶端cpu的型別或製造商

ua-os:給出了執行在客戶端機器上的作業系統名稱及版本

ua-pixels:提供了客戶端顯示器的畫素資訊

user-agent:將發起請求的應用程式名稱告知伺服器

accept:告訴伺服器能夠傳送哪些**型別

accept-charset:告訴伺服器能夠傳送哪些字符集

accept-encoding:告訴伺服器能夠傳送哪些編碼方式

accept-language:告訴伺服器能夠傳送哪些語言

te:告訴伺服器可以使用那些擴充套件傳輸編碼

expect:允許客戶端列出某請求所要求的伺服器行為

range:如果伺服器支援範圍請求,就請求資源的指定範圍

if-match:如果實體標記與文件當前的實體標記相匹配,就獲取這份文件

if-modified-sinec:除非在某個指定的日期之後資源被修改過,否則就限制這個請求

if-none-match:如果提供的實體標記與當前文件的實體標記不相符,就獲取文件

if-range:允許對文件的某個範圍進行條件請求

if-unmodified-since:除非在某個指定日期之後資源沒有被修改過,否則就限制這個請求

authorization:包含了客戶端提供給伺服器,以便對其自身進行認證的資料

cookie:客戶端用它向伺服器傳送資料

cookie2:用來說明請求端支援的cookie版本

max-forward:在通往源端伺服器的路徑上,將請求**給其他**或閘道器的最大次數

proxy-authorization:這個首部在與**進行認證時使用的

proxy-connection:這個首部是在與**建立連線時使用的

age:(從最初建立開始)響應持續時間

public:伺服器為其資源支援的請求方法列表

retry-after:如果資源不可用的話,在此日期或時間重試

server:伺服器應用程式軟體的名稱和版本

title:對html文件來說,就是html文件的源端給出的標題

warning:比原因短語更詳細一些的警告報文

accept-ranges:對此資源來說,伺服器可接受的範圍型別

vary:伺服器會根據這些首部的內容挑選出最適合的資源版本傳送給客戶端

proxy-authenticate:來自**的對客戶端的質詢列表

set-cookie:在客戶端設定資料,以便伺服器對客戶端進行標識

set-cookie2:與set-cookie類似

www-authenticate:來自伺服器的對客戶端的質詢列表

實體首部:描述主體的長度和內容,或者資源自身

allow:列出了可以對此實體執行的請求方法

location:告知客戶端實體實際上位於何處,用於將接收端定向到資源的位置(url)上去

content-base:解析主體中的相對url時使用的基礎url

content-encoding:對主體執行的任意編碼方式

content-language:理解主體時最適宜使用的自然語言

content-length:主體的長度

content-location:資源實際所處的位置

content-md5:主體的md5校驗和

content-range:在整個資源中此實體表示的位元組範圍

content-type:這個主體的物件型別

expires:實體不再有效,要從原始的源端再次獲取實體的日期和時間

last-modified:這個實體最後一次被修改的日期和時間

擴充套件首部:規範中沒有定義的新首部,開發者可以自定義乙個首部的值/對

http方法:並不是每個伺服器都實現了所有的方法。即使伺服器實現了所有這些方法,這些方法的使用很可能也是受限的。例如,支援delete方法或put方法的伺服器可能並不希望任何人都能夠刪除或儲存資源,這些限制通常都是在伺服器的配置中進行設定的。

常用的http方法:

get方法:通常用於請求伺服器傳送某個資源。不包含主體

head方法:與get方法類似,但伺服器在響應中只返回首部,使用head方法可以,在不獲取資源的情況下了解資源的情況(比如,判斷其型別);通過檢視響應中的狀態碼,看看某個物件是否存在;通過檢視首部,測試資源是否被修改了;不包含主體

post方法:該方法是用來向伺服器傳送資料的,常用於html表單,包含主體

put方法:該方法的語義就是讓伺服器用請求的主體部分來建立乙個由所請求的url命名的新文件,如果那個url已經存在的話,就用這個主體來替代它。包含主體

trace方法:主要用於驗證請求是否如願穿過了請求/響應鏈,不包含主體

options方法:決定可以在伺服器上執行那些方法,不包含主體

delete方法:該方法就是請伺服器刪除請求url所指定的資源,但是客戶端應用程式無法保證刪除操作一定會被執行,因為http規範允許伺服器在不通知客戶端的情況下撤銷請求,不包含主體

擴充套件方法:指的是沒有在http/1.1規範中定義的方法,這些方法為開發者提供了一種擴充套件這些http服務能力的手段。

狀態碼:http狀態碼被分成了五大類。狀態碼為客戶端提供了一種理解事務處理結果的便捷方式。

1、100~199(資訊性狀態碼):http/1.1向協議中引入了資訊性狀態碼

2、200~299(成功狀態碼):客戶端發起請求時,這些請求通常都是成功的。伺服器有一組用來表示成功的狀態碼,分別對應於不同型別的請求

3、300~399(重定向狀態碼):重定向狀態碼要麼告知客戶端使用替代位置來訪問他們所感興趣的資源,要麼就提供乙個替代的響應而不是資源的內容

4、400~499(客戶端錯誤狀態碼):有時客戶端會傳送一些伺服器無法處理的東西。瀏覽網頁時,我們都看到過臭名昭著的404 not found錯誤碼,這只是伺服器在告訴我們,它對我們請求的資源一無所知

5、500~599(伺服器錯誤狀態碼):有時客戶端傳送了一條有效請求,伺服器自身卻出錯了,這些會返回5xx狀態碼

http狀態碼詳解

200 伺服器成功返回網頁 301 永久移動 請求的網頁已永久移動到新位置。伺服器返回此響應 對 get 或 head 請求的響應 時,會自動將請求者轉到新位置。403 禁止 伺服器拒絕請求 404 請求的網頁不存在 503 服務不可用 常見http狀態碼大全 1xx 臨時響應 表示臨時響應並需要請...

http狀態碼詳解

一 http狀態碼是什麼意思 http狀態碼 英語 http status code 是用以表示網頁伺服器超文字傳輸協議響應狀態的3位數字 它由 rfc 2616 規範定義的,並得到 rfc 2518 rfc 2817 rfc 2295 rfc 2774 與 rfc 4918 等規範擴充套件。所有狀...

HTTP狀態碼詳解

我們在訪問網頁的時候,伺服器會返回 http 狀態 以響應該請求,在這裡給常用的狀態碼進行詳解。狀態碼 說明100 繼續 請求者應繼續進行請求。伺服器返回此 以表示,伺服器已收到某項請求的第一部分,正等待接收剩餘部分。101 切換協議 請求者已要求伺服器切換協議,伺服器已確認並準備進行切換。狀態碼說...