標籤:位置 eth time 基本 length uri dir 返回 require
什麼是狀態代碼?
狀態代碼的作用是:伺服器告訴用戶端,發生了什麼事。
在http協議中狀態代碼出現在http response 的第一行。它會返回一個三位元的狀態代碼和狀態資訊。狀態代碼為了便於程式進行處理,而狀態資訊是為了讓使用者能清楚的明白意思。
狀態代碼分類
HTTP狀態代碼被分為五大類, 目前我們使用的HTTP協議版本是1.1, 支援以下的狀態代碼。隨著協議的發展,HTTP規範中會定義更多的狀態代碼。
小技巧: 假如你看到一個狀態代碼503, 你並不知道具體503是什麼意思。 這時候你只要知道503是屬於(5XX,伺服器錯誤就可以了)
通常一些常見的狀態代碼是這樣分的:
1 xx : 表示資訊提示
2xx : 表示成功
3xx :重新導向
4xx :用戶端出現錯誤
5xx :伺服器出現錯誤
以下是一些常見狀態代碼具體的意義:
200 ok 伺服器成功處理了請求。
301和302 moved permanently (重新導向)請求資源的URL已經被移走,在response中會攜帶一個location URL,告訴你現在這個資源所在的路徑。
304 Not modified(未修改)指的是用戶端所用的資源是嶄新的,要求用戶端使用緩衝。
404 Not find沒有找到請求的資源。
500 Internal server error 伺服器遇到一個錯誤,使其無法處理請求。
更多的狀態代碼如下:
1XX 資訊性狀態代碼
100 continue 繼續 收到請求的起始部分,用戶端應該繼續請求。
101 switching protocols :協議切換 。伺服器根據用戶端的只是將協議切換成header所列出的協議。
2xx 成功性狀態代碼
200 ok 伺服器成功處理了請求。
201 created 那些需要服務來建立對象的請求來說,資源已經建立完畢。
202 Accepted 請求已接受,但伺服器還沒處理。
203 Non--Authoritive information (非權威資訊) 請求已經處理成功,但header中的資訊不是來源於原伺服器,而是來自資源的副本。
204 NO content (沒有內容)Response中包含一些Header和一個狀態行, 但不包括實體的主題內容(沒有response body)
205 reset content (重設內容)一個主要用於瀏覽器的代碼。意思是瀏覽器應該重設當前頁面上所有的HTML表單。
206 part content(部分內容)部分請求成功
3xx 重新導向性狀態代碼
重新導向狀態代碼用來告訴瀏覽器用戶端,它們訪問的資源已被移動, Web伺服器發送一個重新導向狀態代碼和一個可選的Location Header, 告訴用戶端新的資源地址在哪。
瀏覽器用戶端會自動用Location中提供的地址,重新發送新的Request。 這個過程對使用者來說是透明的。
301和302 非常相似, 一個是永久轉移,一個是臨時轉移。 (在我們看來, 這兩個沒太大區別)
302,303,307 是一樣。 這是因為302是HTTP 1.0定義的, HTTP1.1中使用303,307. 同時又保留了302. (但在現實中,我們還是用302,我是沒見過303和307)
300 |
Multiple Choices(多項選擇) |
用戶端請求了實際指向多個資源的URL。這個代碼是和一個選項列表一起返回的,然後使用者就可以選擇他希望的選項了 |
|
301 |
Moved Permanently(永久移除) |
請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置 |
狀態代碼301 |
302 |
Found(已找到) |
與狀態代碼301類似。但這裡的移除是臨時的。 用戶端會使用Location中給出的URL,重新發送新的HTTP request |
HTTP協議詳解-302 |
303 |
See Other(參見其他) |
類似302 |
|
304 |
Not Modified(未修改) |
客戶的緩衝資源是最新的, 要用戶端使用緩衝 |
HTTP協議之緩衝-304 |
305 |
Use Proxy(使用代理) |
必須通過代理訪問資源, 代理的地址在Response 的Location中 |
|
306 |
未使用 |
這個狀態代碼當前沒使用 |
|
307 |
Temporary Redirect(臨時重新導向 |
類似302 |
4XX用戶端錯誤狀態代碼
有時用戶端會發送一些伺服器無法處理的東西,比如格式錯誤的Request, 或者最常見的是, 請求一個不存在的URL。
狀態代碼 |
狀態訊息 |
含義 |
執行個體 |
400 |
Bad Request(壞請求) |
告訴用戶端,它發送了一個錯誤的請求。 |
狀態代碼400 |
401 |
Unauthorized(未授權) |
需要用戶端對自己認證 |
HTTP協議之基本認證-401 |
402 |
Payment Required(要求付款) |
這個狀態還沒被使用, 保留給將來用 |
|
403 |
Forbidden(禁止) |
請求被伺服器拒絕了 |
狀態代碼403 |
404 |
Not Found(未找到) |
未找到資源 |
HTTP協議詳解-404 |
405 |
Method Not Allowed(不允許使用的方法) |
不支援該Request的方法。 |
狀態代碼405 |
406 |
Not Acceptable(無法接受) |
|
|
407 |
Proxy Authentication Required(要求進行代理認證) |
與狀態代碼401類似, 用於需要進行認證的Proxy 伺服器 |
HTTP協議之代理-407 |
408 |
Request Timeout(請求逾時) |
如果用戶端完成請求時花費的時間太長, 伺服器可以回送這個狀態代碼並關閉串連 |
|
409 |
Conflict(衝突) |
發出的請求在資源上造成了一些衝突 |
|
410 |
Gone(消失了) |
伺服器曾經有這個資源,現在沒有了, 與狀態代碼404類似 |
|
411 |
Length Required(要求長度指示) |
伺服器要求在Request中包含Content-Length。 |
狀態代碼411 |
412 |
Precondition Failed(先決條件失敗) |
|
|
413 |
Request Entity Too Large(請求實體太大) |
用戶端發送的實體主體部分比伺服器能夠或者希望處理的要大 |
狀態代碼413 |
414 |
Request URI Too Long(請求URI太長) |
用戶端發送的請求所攜帶的URL超過了伺服器能夠或者希望處理的長度 |
狀態代碼414 |
415 |
Unsupported Media Type(不支援的媒體類型) |
伺服器無法理解或不支援用戶端所發送的實體的內容類型 |
|
416 |
Requested Range Not Satisfiable(所請求的範圍未得到滿足) |
|
|
417 |
Expectation Failed(無法滿足期望) |
|
|
5XX伺服器錯誤狀態代碼
有時候用戶端發送了一條有效Request, Web伺服器自身卻出錯了。 可能是Web伺服器運行出錯了, 或者網站都掛了。 5XX就是用來描述伺服器錯誤的。
狀態代碼 |
狀態訊息 |
含義 |
執行個體 |
500 |
Internal Server Error(內部伺服器錯誤) |
伺服器遇到一個錯誤,使其無法為請求提供服務 |
狀態代碼500 |
501 |
Not Implemented(未實現) |
用戶端發起的請求超出伺服器的能力範圍(比如,使用了伺服器不支援的要求方法)時,使用此狀態代碼。 |
狀態代碼501 |
502 |
Bad Gateway(網關故障) |
代理使用的伺服器遇到了上遊的無效響應 |
狀態代碼502 |
503 |
Service Unavailable(未提供此服務) |
伺服器目前無法為請求提供服務,但過一段時間就可以恢複服務 |
|
504 |
Gateway Timeout(網關逾時) |
與狀態嗎408類似, 但是響應來自網關或代理,此網關或代理在等待另一台伺服器的響應時出現了逾時 |
|
505 |
HTTP Version Not Supported(不支援的HTTP版本) |
伺服器收到的請求使用了它不支援的HTTP協議版本。 有些伺服器不支援HTTP早期的HTTP協議版本,也不支援太高的協議版本 |
狀態代碼505 |
http協議狀態代碼及其意義