1、HTTP是什么
超文本傳輸協議(hypertext transfer protocol, HTTP)是一個運行在TCP之上的請求-響應協議,其事務處理流程如下:
(1)客戶端與服務器建立連接;
(2)客戶斷向服務器提出請求;
(3)服務器處理請求,並返回響應信息;
(4)客戶端與服務器斷開連接。
其請求報文格式如下:
圖片來源:https://www.cnblogs.com/ldq2016/p/9055933.html
響應報文如下:
圖片來源:https://www.cnblogs.com/ldq2016/p/9055933.html
2、常見響應狀態碼
來源:百度百科
1、1XX:信息
狀態碼 | 描述 |
100 Continue | 服務器僅接收到部分請求,但是一旦服務器並沒有拒絕該請求,客戶端應該繼續發送其余的請求。 |
101 Switching Protocols | 服務器轉換協議:服務器將遵從客戶的請求轉換到另外一種協議。 |
2、2XX:成功
200 OK
|
請求成功
|
201 Created
|
請求被創建完成,同時新的資源被創建。
|
202 Accepted
|
供處理的請求已被接受,但是處理未完成。
|
203 Non-authoritative
|
文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝。
|
204 No Content
|
沒有新文檔。瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,
而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
|
205 Reset Content
|
沒有新文檔。但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。
|
206 Partial Content
|
客戶發送了一個帶有Range頭的GET請求,服務器完成了它。
|
3、3XX 重定向
300 Multiple Choices
|
多重選擇。鏈接列表。用戶可以選擇某鏈接到達目的地。最多允許五個地址。
|
301 Moved Permanently
|
所請求的頁面已經轉移至新的url。
|
302 Found
|
所請求的頁面已經臨時轉移至新的url。
|
303 See Other
|
所請求的頁面可在別的url下被找到。
|
304 Not Modified
|
未按預期修改文檔。客戶端有緩沖的文檔並發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。
|
305 Use Proxy
|
客戶請求的文檔應該通過Location頭所指明的代理服務器提取。
|
306
Unused
|
此代碼被用於前一版本。目前已不再使用,但是代碼依然被保留。
|
307 Temporary Redirect
|
被請求的頁面已經臨時移至新的url。
|
4、4xx:客戶端錯誤
消息
|
描述
|
---|---|
400 Bad Request
|
服務器未能理解請求。
|
401 Unauthorized
|
被請求的頁面需要用戶名和密碼。
|
401.1
|
登錄失敗。
|
401.2
|
服務器配置導致登錄失敗。
|
401.3
|
由於 ACL 對資源的限制而未獲得授權。
|
401.4
|
篩選器授權失敗。
|
401.5
|
ISAPI/CGI 應用程序授權失敗。
|
401.7
|
訪問被 Web 服務器上的 URL 授權策略拒絕。這個錯誤代碼為 IIS 6.0 所專用。
|
402 Payment Required
|
此代碼尚無法使用。
|
403 Forbidden
|
對被請求頁面的訪問被禁止。
|
403.1
|
執行訪問被禁止。
|
403.2
|
讀訪問被禁止。
|
403.3
|
寫訪問被禁止。
|
403.4
|
要求 SSL。
|
403.5
|
要求 SSL 128。
|
403.6
|
IP 地址被拒絕。
|
403.7
|
要求客戶端證書。
|
403.8
|
站點訪問被拒絕。
|
403.9
|
用戶數過多。
|
403.10
|
配置無效。
|
403.11
|
密碼更改。
|
403.12
|
拒絕訪問映射表。
|
403.13
|
客戶端證書被吊銷。
|
403.14
|
拒絕目錄列表。
|
403.15
|
超出客戶端訪問許可。
|
403.16
|
客戶端證書不受信任或無效。
|
403.17
|
客戶端證書已過期或尚未生效。
|
403.18
|
在當前的應用程序池中不能執行所請求的 URL。這個錯誤代碼為 IIS 6.0 所專用。
|
403.19
|
不能為這個應用程序池中的客戶端執行 CGI。這個錯誤代碼為 IIS 6.0 所專用。
|
403.20
|
Passport 登錄失敗。這個錯誤代碼為 IIS 6.0 所專用。
|
404 Not Found
|
服務器無法找到被請求的頁面。
|
404.0
|
(無)–沒有找到文件或目錄。
|
404.1
|
無法在所請求的端口上訪問 Web 站點。
|
404.2
|
Web 服務擴展鎖定策略阻止本請求。
|
404.3
|
MIME 映射策略阻止本請求。
|
405 Method Not Allowed
|
請求中指定的方法不被允許。
|
406 Not Acceptable
|
服務器生成的響應無法被客戶端所接受。
|
407 Proxy Authentication Required
|
用戶必須首先使用代理服務器進行驗證,這樣請求才會被處理。
|
408 Request Timeout
|
請求超出了服務器的等待時間。
|
409 Conflict
|
由於沖突,請求無法被完成。
|
410 Gone
|
被請求的頁面不可用。
|
411 Length Required
|
"Content-Length" 未被定義。如果無此內容,服務器不會接受請求。
|
412 Precondition Failed
|
請求中的前提條件被服務器評估為失敗。
|
413 Request Entity Too Large
|
由於所請求的實體的太大,服務器不會接受請求。
|
414 Request-url Too Long
|
由於url太長,服務器不會接受請求。當post請求被轉換為帶有很長的查詢信息的get請求時,就會發生這種情況。
|
415 Unsupported Media Type
|
由於媒介類型不被支持,服務器不會接受請求。
|
416 Requested Range Not Satisfiable
|
服務器不能滿足客戶在請求中指定的Range頭。
|
417 Expectation Failed
|
執行失敗。
|
423
|
鎖定的錯誤。
|
5、5XX:服務器錯誤
消息
|
描述
|
---|---|
500 Internal Server Error
|
請求未完成。服務器遇到不可預知的情況。
|
500.12
|
應用程序正忙於在 Web 服務器上重新啟動。
|
500.13
|
Web 服務器太忙。
|
500.15
|
不允許直接請求 Global.asa。
|
500.16
|
UNC 授權憑據不正確。這個錯誤代碼為 IIS 6.0 所專用。
|
500.18
|
URL 授權存儲不能打開。這個錯誤代碼為 IIS 6.0 所專用。
|
500.100
|
內部 ASP 錯誤。
|
501 Not Implemented
|
請求未完成。服務器不支持所請求的功能。
|
502 Bad Gateway
|
請求未完成。服務器從上游服務器收到一個無效的響應。
|
502.1
|
CGI 應用程序超時。 ·
|
502.2
|
CGI 應用程序出錯。
|
503 Service Unavailable
|
請求未完成。服務器臨時過載或宕機。
|
504 Gateway Timeout
|
網關超時。
|
505 HTTP Version Not Supported
|
服務器不支持請求中指明的HTTP協議版本。
|
3、常見請求方式
常見的HTTP請求方式主要有9種:
HTTP1.0:GET、POST、HEAD
HTTP1.1新增: PUT、PATCH、DELETE、OPTIONS、TRACE、CONNECT
1、GET
GET是HTTP協議中常用的請求方式,比如百度搜索“get”:
會在URL后面明文攜帶信息,常用於獲取資源,不會改變資源的狀態,具有冪等性。
2、POST
POST通過請求體(RequestBody)傳遞參數。
POST先會將報文頭發送給服務器,然后服務器返回100 continue后,再發送請求體,實際上發生了兩次TCP連接,不具備冪等性。
3、HEAD
類似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭。
4、PUT
從客戶端向服務器傳送的數據取代指定的文檔的內容。
5、PATCH
是對 PUT 方法的補充,用來對已知資源進行局部更新 。
6、DELETE
請求服務器刪除指定的頁面。
7、OPTIONS
客戶端查看服務器性能
8、TRACE
回顯服務器收到的請求,主要用於測試或診斷
9、CONNECT
HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理服務器。