2013年8月16日 星期五

HTTP Status Code

HTTP Status Code

100~199 訊息狀態碼

StatusCode ReasonPhrase 說明
100 Continue Client端有一個Message要發送給Server
但希望在發送之前先看一下Server是否會接受這個Message
所以在Request表頭中加入一個名稱Expect值為100 Conutinue
Server端收到後如果可以接受,就馬上回應這個狀態碼給Client
表示收到了Request的初始部份,要求Client端繼續
通常用於傳送接收一個大的Message時的優化
101 Switching Protocols 伺服器正在切換成Request封包表頭中
Update所指定的通訊協定

200~299 成功狀態碼

Status Code Reason Phrase 說明
200 OK 就是OK
201 Created 資源已建立,用於回應建立資源的要求,例如PUT
回應的訊息中,應該在表頭中加入Location
用來告訴Client建立好的資源URL位置
202 Accepted 請求已被接受,但伺服器還未執行任何動作,也不能保證會完成
簡單的說,就是朕知道了...
203 Non-Authoritative
Information
Header中包含的訊息,並不是來自於要求的伺服器
而是來自資源的一個副本
204 No Content 用來告訴瀏覽器,在不轉頁的情況下,刷新表單頁面
205 Reset Content 用來告訴瀏覽器,Reset目前頁面中的表單元素
206 Partial Content Client透過Request Header中的Range來要求部份或某個範圍的資源
這個狀態碼就是成功執行了一個部份或是某個範圍的請求
Response中的Header必須包含Content-Range、Date
以及ETag或是Content-Location

300~399 重轉向定位狀態碼

Status Code Reason Phrase 說明
300 Multiple Choices 訊息類狀態碼
301 Moved Permanently 所要求的資源已移除,永久轉向
Response Header中的Location為新的URL
之前的要求都要改成新的URL
HTTP/1.0版本使用
302 Found 和301狀態碼類似
差別在於Header中Location給出的URL是暫時性的
之後的要求還是要用原來的URL
303 See Other 回應Client端另一個URL來獲得資源
主要目的是允許POST請求的回應轉向到某個資源
304 Not Modified 通過Client的Request Header來判斷
如果資源末被修改的話,就回應這個狀態碼
305 Use Proxy 必須通過一個代理來訪問資源
代理的位置由Header中的Location給出
306 尚未使用 該狀態碼目前尚未使用
307 Temporary Redirect 和301狀態碼類似
差別在於Header中Location給出的URL是暫時性的
之後的要求還是要用原來的URL
HTTP/1.1版本使用

400~499 客戶端錯誤狀態碼

Status Code Reason Phrase 說明
400 Bad Request 告訴客戶端它發送了一個錯誤的要求
401 Unauthorized 告訴客戶端在要求資源之前,需要先經過身份驗證
402 Payment Required 目前尚未使用
403 Forbidden 告訴客戶端服務已被拒絕了
拒絕的原因可在回應的主體部份來描述
但這個狀態碼通常是不想說明拒絕原因的時後使用的
404 Not Found 找不到所要求的資源
405 Method Not Allowed 告訴客戶端收到不支援的HTTP Method
並在回應的表頭中以Allow告知可支援的Method
406 Not Acceptable Client端可在表頭中用Accept告之可接受的資源型態
當Server端沒有所指定的資源型態時,用這個狀態碼來告之
通常會在回應的表頭中,加上一些訊息
讓Client端知道為什麼要求無法滿足
407 Proxy Authentication Required 和401狀態碼類似
但目標是要求對資源進行認證的代理伺服器
408 Request Timeout 完成要求的時間太長,伺服器所回應的狀態碼
並關閉連接
逾時時間以伺服器設定為主
409 Conflict 和訴客戶端,資源發出衝突
410 Gone 和404類似
只是伺服器曾經擁有該資源,只是被移除了
411 Length Required 告訴客戶端表頭中需要包含Content-Length
412 Preconditaion Failed 客戶端發起條件請求,其中一個條件失敗了的時後使用的回應碼
413 Request Entity Too Large 客戶端發送的Message比伺服器能夠處理的要大時
用這個狀態碼回應
414 Request URI Too Long 客戶端發送的URL比伺服器能夠處理的長度要長時
要這個狀態碼回應
415 Unsupported Media Type 伺服器無法支援客戶端發送的mime type時
用這個狀態碼回應
416 Requested Range Not Satisfiable 客戶端要求的表頭Range中指定了資源的某個範圍時
伺服器在範圍無效或是無法滿足時,用這個狀態碼回應
417 Expectation Failed 客戶端要求的表頭Expect中包含了一個期望時
伺服器無法滿足時,用這個狀態碼回應

500~599 伺服器端錯誤狀態碼

Status Code Reason Phrase 說明
500 Internal Server Error 伺服器錯誤
501 Not Implemented 伺服器無法處理Client所發起的要求
例如使用了不支援的HTTP Method
502 Bad Gateway 代理或是Gateway收到了一條偽裝的回應
就會回應這個狀態碼
503 Service Unavailable 伺服器目前無法提供服務,例如過於忙錄
可以在Response Header中加入一個Retry-After
用來表示服務什麼時後會變為可用的
504 Gateway Timeout 和狀態碼408類似,只是這個的回應來自於一個Gateway或代理
它們在等待另一個伺服器對其請求時逾時了
505 HTTP Version Not Supported 伺服器收到不支援的通訊協定版本時的狀態回應碼