旅游網站制作百度云網站搜索排名優(yōu)化軟件
HTTP協(xié)議
什么是協(xié)議
協(xié)議實際上是某些人或組織提前制定好的一套規(guī)范,大家只要都按照這個規(guī)范來就可以做到溝通無障礙
HTTP協(xié)議是W3C(萬維網聯(lián)盟組織)
制定的一種超文本傳輸通信協(xié)議(發(fā)送消息的模板和數(shù)據的格式),除了傳送字符串,還有聲音、視頻、圖片等流媒體等超文本信息
Http協(xié)議游走在瀏覽器和服務器之間,瀏覽器和服務器在請求 (request) 或響應 (response)
數(shù)據的期間都要遵循HTTP協(xié)議,這樣二者才能解耦合即不互相依賴
HTTP的請求協(xié)議及組成
使用瀏覽器,右擊-->檢查或直接按F12
,找到network
網絡面板,通過這個面板查看瀏覽器發(fā)起的請求,ALL表示所有請求,XHR表示Ajax請求
HTTP請求協(xié)議GET請求
的請求報文
GET /servlet05/getServlet?username=lucy&userpwd=1111 HTTP/1.1 #請求行
Host: localhost:8080 #請求頭
Connection: keep-alive
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
# 具體的來源頁面,如執(zhí)行操作后回到當前頁面
Referer: http://localhost:8080/servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9#空白行#請求體(在Query String parameters里面)
HTTP請求協(xié)議的POST請求
的具體報文
POST /servlet05/postServlet HTTP/1.1 #請求行
Host: localhost:8080 #請求頭
Connection: keep-alive
Content-Length: 25
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
# 請求參數(shù)的內容類型,application/x-www-form-urlencoded表示表單傳參
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/servlet05/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9#空白行
username=lisi&userpwd=123 #請求體(在Form Date選項里面)
請求行如POST /servlet05/postServlet HTTP/1.1
包括請求方式
,URI
,HTTP協(xié)議版本號
三部分
組成 | 描述 |
---|---|
請求方式 | GET, POST, DELETE , PUT , HEAD , OPTIONS , TRACE |
URI | URI是統(tǒng)一資源標識符,代表網絡中某個資源的名字,通過URI是無法定位資源的 URL是統(tǒng)一資源定位符,代表網絡中某個具體的資源,通過URL是可以定位到資源,如http://localhost:8080/servlet05/index.html |
HTTP協(xié)議版本號 | 描述當前HTTP協(xié)議的版本 |
請求頭包含很多屬性,如請求的主機和端口(Host) ,瀏覽器信息,cookie等信息
空白行: 空白行是用來區(qū)分請求頭
和請求體
瀏覽器向服務器發(fā)送的具體數(shù)據,可以是鍵值對格式或者JSON格式的數(shù)據**
請求體: 瀏覽器發(fā)送到服務器的請求參數(shù)有name=value&...(鍵值對)
和{"key":value,...}(json對象)
兩種格式
URL請求
會將請求參數(shù)以鍵值對的格式拼接到請求地址后面,form表單的GET和POST請求
會將請求參數(shù)以鍵值對的格式存儲到請求報文的請求體中- 發(fā)起Ajax請求時,可以將請求參數(shù)以Json的格式存儲到請求報文的請求體中
HTTP響應協(xié)議及組成
HTTP響應協(xié)議的具體報文
HTTP/1.1 200 ok(狀態(tài)的描述信息) 狀態(tài)行
Server: nginx
Date: Mon, 09 Oct 2023 00:37:57 GMT
#Content-Type: application/json 響應頭
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Keep-Alive: timeout=20
Connection: keep-alive
Set-Cookie: JSESSIONID=6E8E893C9662C7A90DDF97FF61856F99; Path=/; HttpOnly空白行<!doctype html> 響應體(在Response選項里面)
<html><head><title>from get servlet</title></head><body><h1>from get servlet</h1></body>
</html>
狀態(tài)行如HTTP/1.1 200 ok
由協(xié)議版本號,狀態(tài)碼,狀態(tài)的描述信息三部分組成
- 狀態(tài)碼: 不同的響應結果對應不同的響應狀態(tài)碼,以4開始的一般是瀏覽器端的錯誤導致的 , 以5開始的一般是服務器端的錯誤導致的
- 狀態(tài)描述信息: ok 表示正常成功結束,not found表示資源找不到
響應頭包含很多屬性,如響應體的內容類型,響應體的內容長度,響應的時間…
空白行: 用來分隔響應頭和響應體的
響應體: 響應體就是服務器響應到瀏覽器的具體數(shù)據,響應內容可以是JSON格式或HTMl等字符串,這些字符串被瀏覽器渲染解釋并執(zhí)行,最終展示出效果
HTTP狀態(tài)信息
1xx: 信息
消息: | 描述: |
---|---|
100 Continue | 服務器僅接收到部分請求,但是一旦服務器并沒有拒絕該請求,客戶端應該繼續(xù)發(fā)送其余的請求 |
101 Switching Protocols | 服務器轉換協(xié)議:服務器將遵從客戶的請求轉換到另外一種協(xié)議 |
2xx: 成功
消息: | 描述: |
---|---|
200 OK | 請求響應成功正常結束,其后是對GET和POST請求的應答文檔 |
201 Created | 請求被創(chuàng)建完成,同時新的資源被創(chuàng)建 |
202 Accepted | 供處理的請求已被接受,但是處理未完成 |
203 Non-authoritative Information | 文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝 |
204 No Content | 沒有新文檔,瀏覽器應該繼續(xù)顯示原來的文檔,如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態(tài)代碼是很有用的 |
205 Reset Content | 沒有新文檔,但瀏覽器應該重置它所顯示的內容,用來強制瀏覽器清除表單輸入內容 |
206 Partial Content | 客戶發(fā)送了一個帶有Range頭的GET請求,服務器完成了它 |
3xx: 重定向
消息: | 描述: |
---|---|
300 Multiple Choices | 多重選擇,鏈接列表,用戶可以選擇某鏈接到達目的地,最多允許五個地址 |
301 Moved Permanently | 所請求的頁面已經轉移至新的url |
302 Found | 所請求的頁面已經臨時轉移至新的url |
303 See Other | 所請求的頁面可在別的url下被找到 |
304 Not Modified | 未按預期修改文檔??蛻舳擞芯彌_的文檔并發(fā)出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用 |
305 Use Proxy | 客戶請求的文檔應該通過Location頭所指明的代理服務器提取 |
306 Unused | 此代碼被用于前一版本。目前已不再使用,但是代碼依然被保留 |
307 Temporary Redirect | 被請求的頁面已經臨時移至新的url |
4xx: 客戶端錯誤
消息: | 描述: |
---|---|
400 Bad Request | 服務器未能理解請求 |
401 Unauthorized | 被請求的頁面需要用戶名和密碼 |
402 Payment Required | 此代碼尚無法使用 |
403 Forbidden | 對被請求頁面的訪問被禁止 |
404 Not Found | 表示訪問的資源不存在,服務器無法找到被請求的頁面 通常是因為路徑寫錯了或服務器中對應的資源并沒有啟動成功 |
405 Method Not Allowed | 請求中指定的方法不被允許,前端發(fā)送的請求方式與后端請求的處理方式不一致時發(fā)生的錯誤 |
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請求時,就會發(fā)生這種情況 |
415 Unsupported Media Type | 由于媒介類型不被支持,服務器不會接受請求 |
416 | 服務器不能滿足客戶在請求中指定的Range頭 |
417 Expectation Failed |
5xx: 服務器錯誤
消息: | 描述: |
---|---|
500 Internal Server Error | 請求未完成,服務器端的程序出現(xiàn)了異常,一般會認為是服務器端的錯誤導致的 |
501 Not Implemented | 請求未完成,服務器不支持所請求的功能 |
502 Bad Gateway | 請求未完成,服務器從上游服務器收到一個無效的響應 |
503 Service Unavailable | 請求未完成,服務器臨時過載或當機 |
504 Gateway Timeout | 網關超時 |
505 HTTP Version Not Supported | 服務器不支持請求中指明的HTTP協(xié)議版本 |