常見http響應狀態碼(status)


1.100-199信息響應

100 Continue: 服務器通知瀏覽器之前一切正常,請客戶端繼續請求,如果請求結束,可忽略;

101 Switching Protocal: 針對請求頭的Upgrade返回的信息。表明服務器正在切換到指定的協議。

Upgrade是HTTP1.1提出的升級機制,可以升級到其他協議。

如果使用,客戶端需要設置如下:

Connection: Upgrade
Upgrade: protocol-name[/protocol-version]

服務器如果不同意直接忽略;如果同意,響應如下:

HTTP/1.1 101 Switching Protocols
Connection: upgrade
Upgrade: protocol-name[/protocol-version]

例如:1)升級WebSocket

客戶端請求如下:

GET ws://example.com/ HTTP/1.1
Connection: Upgrade
Upgrade: websocket
Origin: http://example.com
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: d4egt7snxxxxxx2WcaMQlA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

服務器如果同意,響應如下:

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: gczJQPmQ4Ixxxxxx6pZO8U7UbZs=

2)升級到http2

 客戶端請求如下:

GET / HTTP/1.1
Host: example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c // h2c是http2的名稱
HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>

服務端如果同意,響應如下:

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

103 Early Hints: 此狀態代碼主要用於與Link 鏈接頭一起使用,以允許用戶代理在服務器仍在准備響應時開始預加載資源

2.200-299成功響應

200 OK: 請求成功

201 Created: 常用於POST,PUT 請求,表明請求已經成功,並新建了一個資源。並在響應體中返回路徑。

202 Accepted: 請求已經接收到,但沒有響應,稍后也不會返回一個異步請求結果。 該狀態碼適用於等待其他進程處理或者批處理的場景。

203 No-Authoritative Information: 表明響應返回的元信息(meta-infomation)和最初的服務器不同,而是從本地或者第三方獲取的。

主要用於其他資源的鏡像和備份。除了前面的情況,首選還是200。

204 No Content: 請求沒有數據返回,但是頭信息有用。用戶代理(瀏覽器)會更新緩存的頭信息。

205 Reset Content: 告訴用戶代理(瀏覽器)重置發送該請求的文檔。

206 Partical Content: 當客戶端使用Range請求頭時,返回該狀態碼。

// 通過curl發起http請求-->響應行為:HTTP/1.1 206 Partial Content
curl -v --header "Range:bytes=0-3"  http://www.baidu.com

名次解釋: 用戶代理: 代替用戶運行的軟件,如web瀏覽器,或者郵件閱讀器。

3.300-399重定向消息

300 Multiple Choice: 返回多個響應,需要瀏覽器或者用戶選擇;

301 Moved Permanently: 請求資源的URL被永久的改變,新的URL會在響應的Location中給出。

瀏覽器到新的URL重新請求資源,因為有些客戶端會把請求方式method改成GET。所以該狀態碼建議GET和HEAD方法中使用。

搜索引擎會更新地址到資源的鏈接(SEO中‘link-judge’被發送到新的URL)。

302 Found:  請求資源的URL被暫時修改到Location提供的URL。未來可能還會有新的修改。

瀏覽器會根據新的URL重新請求資源。有些客戶端會把方法method改為GET,建議在GET和HEAD方法中使用。

搜索引擎不會更改URL到資源的。

// 應用
負載均衡

303 See Other: 服務通過返回的響應數據指導客戶端通過GET方法去另一個URL獲取資源。

通常用於POST或者PUT的請求返回結果,重定向到信息提示頁面或者進度展示頁面。

重定向頁面的方法是GET方法。

304 Not Modified: 資源未變更。服務器根據請求頭判斷,需要資源未修改,只返回響應頭;否則將資源一起返回。

發生場景:1)請求方法安全(如GET,HEAD請求)

2)條件請求並且使用了If-None-Match或者If-Modified-Since 的請求頭

如果想使用200狀態碼達到相同304效果,需要強制緩存,需要額外的請求頭:Cache-Control, Expires, Vary

307 Temporary Redirect: 臨時重定向。基本和302相同。

唯一的區別是這個狀態碼嚴格禁止瀏覽器到新URL請求資源時修改原來的請求方式和請求體。

就是說原來使用POST,這次還是要使用POST。

如果想要用PUT方法去修改一個服務器上沒有的資源,可以用303狀態碼

如果想要把一個POST方法改為GET,請使用303。

308 Permanent Redirect: 永久重定向。基本和301相同。但是嚴格禁止修改請求方式和請求體。

4. 400-499 客戶端錯誤響應

400 Bad Request: 請求語法有問題,服務器無法識別。

沒有host請求頭字段,或者設置了超過一個的host請求頭字段。

401 UnAuthorized: 客戶端未授權該請求。缺乏有效的身份認證憑證,一般可能是未登陸。登陸后一般都解決問題。

403 Forbidden: 服務器拒絕響應。權限不足。

404 Not Found: URL無效或者URL有效但是沒有資源。

405 Method Not Allowed: 請求方式Method不允許。但是GET和HEAD屬於強制方式,不能返回這個狀態碼。

406 Not Acceptable: 資源類型不符合服務器要求。

407 Proxy Authorization Required: 需要代理授權。

408 Request Timeout:服務器將不再使用的連接關閉。響應頭會有Connection: close。

426 Upgrade Required: 告訴客戶端需要升級通信協議。

5. 500-599 服務器錯誤響應

500 Internal Server Error: 服務器內部錯誤,未捕獲。

502 Bad Gateway: 服務器作為網關使用時,收到上游服務器返回的無效響應。

503 Service Unavailable: 無法服務。一般發生在因維護而停機或者服務過載。

一般還會伴隨着返回一個響應頭Retry-After: 說明恢復服務的估計時間。

504 Gateway Timeout: 網關超時。服務器作為網關或者代理,不能及時從上游服務器獲取響應返回給客戶端。

505 Http Version Not Supported: 發出的請求http版本服務器不支持。如果請求通過http2發送,服務器不支持http2.0,就會返回該狀態碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM