HTTP 協議(Hypertext Transfer Protocol, 超文本傳輸協議),是一個客戶端請求和響應的標準協議,這個協議詳細規定了瀏覽器和萬維網服務器之間互相通訊的規則。用戶輸入地址和端口號以後就能夠從服務器上取得所須要的網頁信息。 html
通訊規則規定了客戶端發送給服務器的內容格式,也規定了服務器發送給客戶端的內容格式。客戶端發送給服務器的格式叫"<font color="red">請求協議</font>";服務器發送給客戶端的格式叫"<font color="red">響應協議</font>"。java
在瀏覽器中 F12可查看chrome
服務器端資源須要經過瀏覽器進行,此時由瀏覽器將咱們給出的請求解析爲知足 HTTP 協議的格式併發出。咱們發出的請求格式須要按照瀏覽器規定的格式來書寫,在瀏覽器中書寫格式以下:瀏覽器
當瀏覽器獲取到信息之後,按照特定格式解析併發送便可。接收到服務器端給出的響應時,也按照 HTTP 協議進行解析獲取到各個數據,最後按照特定格式展現給用戶。服務器
支持客戶/服務器模式。 網絡
簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的 有 GET、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲 HTTP 協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。 併發
靈活:HTTP 容許傳輸任意類型的數據對象。傳輸的類型由Content-Type加以標記。 ide
無鏈接:無鏈接是表示每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。ui
HTTP1.1 版本後支持可持續鏈接。經過這種鏈接,就有可能在創建一個 TCP 鏈接後,發送請求並獲得迴應,而後發送更多的請求並獲得更多的迴應.經過把創建和釋放 TCP 鏈接的開銷分攤到多個請求上,則對於每一個請求而言,因爲 TCP 而形成的相對開銷被大大地下降了。並且, 還能夠發送流水線請求,也就是說在發送請求 1 以後的迴應到來以前就能夠發送請求 2.也能夠認爲,一次鏈接發送多個請求,由客戶機確認是否關閉鏈接,而服務器會認爲這些請求分別來自不一樣的客戶端。 url
HTTP(超文本傳輸協議)是一個基於請求與響應模式的、應用層的協議,常基於 TCP 的鏈接方式,絕大多數的 Web 開發,都是構建在 HTTP 協議之上的 Web 應用。
HTTP URL (URL 是一種特殊類型的 URI,包含了用於查找某個資源的足夠的信息)的格式 以下:
http://host[:port]/[abc_path]
http://IP(主機名/域名):端口/訪問的資源路徑
HTTP 請求由三部分組成,分別是:請求行、請求頭、請求正文。
經過chrome瀏覽器, F12 —> Network查看。
Get 請求(沒有請求體)
Post 請求
格式
請求行 請求頭1 請求頭2 … 請求空行 請求體
請求行以一個方法符號開頭,以空格分開,後面跟着請求的 URI 和協議的版本。
格式以下:Method Request-URI HTTP-Version CRLF
Method 表示請求方法;
Request-URI 是一個統一資源標識符;
HTTP-Version 表示請 求的 HTTP 協議版本;
CRLF 表示回車和換行;
在接收和解釋請求消息後,服務器返回一個 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>;