HTTP協議
HTTP 協議(Hypertext Transfer Protocol, 超文本傳輸協議),是一個客戶端請求和響應的標準協議,這個協議詳細規定了瀏覽器和萬維網服務器之間互相通信的規則。用戶輸入地址和端口號之後就可以從服務器上取得所需要的網頁信息。
通信規則規定了客戶端發送給服務器的內容格式,也規定了服務器發送給客戶端的內容格式。客戶端發送給服務器的格式叫"<font color="red">請求協議</font>";服務器發送給客戶端的格式叫"<font color="red">響應協議</font>"。
在瀏覽器中 F12可查看
瀏覽器中的書寫格式
服務器端資源需要通過瀏覽器進行,此時由瀏覽器將我們給出的請求解析爲滿足 HTTP 協議的格式併發出。我們發出的請求格式需要按照瀏覽器規定的格式來書寫,在瀏覽器中書寫格式如下:
當瀏覽器獲取到信息以後,按照特定格式解析併發送即可。接收到服務器端給出的響應時,也按照 HTTP 協議進行解析獲取到各個數據,最後按照特定格式展示給用戶。
HTTP協議的特點
-
支持客戶/服務器模式。
-
簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的 有 GET、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於 HTTP 協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
-
靈活:HTTP 允許傳輸任意類型的數據對象。傳輸的類型由Content-Type加以標記。
-
無連接:無連接是表示每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
HTTP1.1 版本後支持可持續連接。通過這種連接,就有可能在建立一個 TCP 連接後,發送請求並得到迴應,然後發送更多的請求並得到更多的迴應.通過把建立和釋放 TCP 連接的開銷分攤到多個請求上,則對於每個請求而言,由於 TCP 而造成的相對開銷被大大地降低了。而且, 還可以發送流水線請求,也就是說在發送請求 1 之後的迴應到來之前就可以發送請求 2.也可以認爲,一次連接發送多個請求,由客戶機確認是否關閉連接,而服務器會認爲這些請求分別來自不同的客戶端。
- 無狀態:HTTP 協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送 的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
HTTP之URL
HTTP(超文本傳輸協議)是一個基於請求與響應模式的、應用層的協議,常基於 TCP 的連接方式,絕大多數的 Web 開發,都是構建在 HTTP 協議之上的 Web 應用。
HTTP URL (URL 是一種特殊類型的 URI,包含了用於查找某個資源的足夠的信息)的格式 如下:
http://host[:port]/[abc_path]
http://IP(主機名/域名):端口/訪問的資源路徑
- http 表示要通過 HTTP 協議來定位網絡資源;
- host 表示合法的 Internet 主機域名或 者 IP 地址;
- port 指定一個端口號,爲空則使用缺省端口 80;
- abs_path 指定請求資源的 URI; 如果 URL 中沒有給出 abs_path,那麼當它作爲請求 URI 時,必須以“/”的形式給出,通常 這個工作瀏覽器自動幫我們完成。
HTTP 請求
HTTP 請求由三部分組成,分別是:請求行、請求頭、請求正文。
通過chrome瀏覽器, F12 —> Network查看。
-
Get 請求(沒有請求體)
-
Post 請求
格式
請求行 請求頭1 請求頭2 … 請求空行 請求體
請求行以一個方法符號開頭,以空格分開,後面跟着請求的 URI 和協議的版本。
格式如下:Method Request-URI HTTP-Version CRLF
Method 表示請求方法;
Request-URI 是一個統一資源標識符;
HTTP-Version 表示請 求的 HTTP 協議版本;
CRLF 表示回車和換行;
HTTP 響應
在接收和解釋請求消息後,服務器返回一個 HTTP 響應消息。HTTP 響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文。
格式
狀態行
響應頭1
響應頭2
…
響應空行
響應體
消息頭
HTTP 消息由客戶端到服務器的請求和服務器到客戶端的響應組成。請求消息和響應消息都是由開始行(對於請求消息,開始行就是請求行,對於響應消息,開始行就是狀態行), 消息報頭(可選),空行(只有 CRLF 的行),消息正文(可選)組成。
每一個報頭域都是由 <font color="red">名字+":"+空格+值</font> 組成,消息報頭域的名字是大小寫無關的。
請求頭
請求報頭允許客戶端向服務器端傳遞請求的附加信息以及客戶端自身的信息。
-
<font color="red">Referer</font>:該請求頭指明請求從哪裏來 。
如果是地址欄中輸入地址訪問的都沒有該請求頭 地址欄輸入地址,通過請求可以看到,此時多了一個 Referer 的請求頭,並且後面的值 爲該請求從哪裏發出。比如:百度競價,只能從百度來的纔有效果,否則不算;通常用來做統計工作、 防盜鏈。
響應頭
響應報頭允許服務器傳遞不能放在狀態行中的附加響應信息,以及關於服務器的信息和 對 Request-URI 所標識的資源進行下一步訪問的信息。
-
<font color="red">Location</font>:Location響應報頭域用於重定向接受者到一個新的位置。
Location響應報頭域,常用在更換域名的時候。
response.sendRedirect("http://www.baidu.com");
-
<font color="red">Refresh</font>:自動跳轉(單位是秒),可以在頁面通過meta標籤實現,也可在後臺實現。
<meta http-equiv="refresh" content="3;url=http://www.baidu.com">
<a href="https://i.loli.net/2020/06/22/zbPOtKIqDjo45Mw.png">點我掃碼領取</a>;