HTTP請求方式中的8種請求方式

介紹:
HTTP是超文本傳輸協議,其定義了客戶端和服務器端之間文本傳輸的規範。HTTP默認使用80端口,這個端口指的是服務器端的端口,而客戶端的端口是動態分配的。當我們沒有指定端口訪問時,瀏覽器會默認幫我們添加80端口。我們也可以自己指定訪問端口。需要注意的是,現在大多數訪問使用HTTPS協議,而HTTPS的默認端口爲443,如果使用80端口訪問,HTTPS協議的服務器可能會被拒絕。

HTTP請求的方法:
HTTP/1.1協議中共定義了八種方法,來表明Request-URL指定的資源不同的操作方式。
HTTP/1.0定義了三種請求方法:GET、POST、和HEAD方法
HTTP/1.1新增了五種方法:OPTIONS,PUT,CONNECT,DELETE和TRACE方法。

方法 描述
GET 請求指定的頁面內容,並返回實體主體
HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據包含在請求體中。POST請求可能會導致新的資源的建立或者已有資源的修改。
PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容
DELETE 請求服務器刪除指定的頁面
CONNECT HTTP1.1協議中預留給能夠將連接方式改爲管道方式的代理服務器
OPTIONS 允許客戶端查看服務器的性能
TRACE 回顯服務器收到的請求,主要用於測試或診斷

HTTP工作原理
HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳給客戶端。HTTP協議採用了請求/響應模型。客戶端向服務器發送一個請求報文,請求報文包含請求行(請求的方法、URL、協議的版本、)請求頭部、空行和請求數據。 服務器以一個狀態行作爲響應,響應的內容包含狀態行(協議的版本,成功或者錯誤代碼,服務器信息),響應頭部、空行和響應數據。

HTTP請求/響應的步驟: 客戶端連接到Web服務器—>發送Http請求(一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。)—>服務器接受請求並返回HTTP響應(一個響應由狀態行、響應頭部、空行和響應數據4部分組成。)—>釋放TCP連接—>客戶端瀏覽器解析HTML內容

1、客戶端連接到Web服務器
一個http客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認爲80)建立TCP套接字連接
2、發送http請求
通過http套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行,請求頭部,空行,請求數據4部分組成。
3、服務器接受請求並返回http響應
Web服務器解析請求,定位請求資源。服務器將資源複本寫到TCP套接字,由客戶端讀取。一個狀態響應由狀態行,響應頭部,空行和響應數據4部分組成。
4、釋放TCP連接
若connection模式爲close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection模式爲keep-alive,則該連接會保持一段時間,在該時間內可以繼續接收請求。
5、客戶端瀏覽器解析HTML內容
客戶端瀏覽器首先解析狀態行,查看錶明請求是否成功的狀態代碼。然後解析每一個響應頭,響應頭告知以下爲若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。

HTTP請求消息requset (客戶端發送給服務器的報文)
客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行,請求頭部,空行,請求數據四部分組成

在這裏插入圖片描述
第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的HTTP版本
GET /562f25980001b1b106000338.jpg HTTP/1.1
GET說明請求類型爲GET,[/562f25980001b1b106000338.jpg]爲要訪問的資源,該行的最後一部分說明使用的是HTTP1.1版本。

第二部分:請求頭部,緊接着請求行之後的部分,用來說明服務器要使用的附加信息

第三部分:空行,請求頭部後面的部分必須是空行,即使第四部分的數據爲空,也必須要有空行

第四部分:請求數據也叫主體,可以添加任意的其他數據

HTTP請求消息Response(服務器返回給客戶端的響應消息)
HTTP響應由狀態行,消息報頭(響應頭部),空行,響應數據4部分組成

例子:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

< html >
< head>< /head>
< body>

< /body>
< /html>

第一部分:狀態行,由HTTP版本號,狀態碼,狀態消息三部分組成
第一行爲狀態行,(HTTP/1.1)表明HTTP版本爲1.1版本,狀態碼爲200,狀態消息爲(ok)
第二部分:消息報頭,用來說明客戶端要使用的一些附加信息
第三部分:空行,消息報頭後面的空行是必須的
第四部分:響應正文,服務器返回給客戶端的文本信息。

GET與POST:
GET方法提交的數據會直接填充在請求報文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ” ,‘?’劃分域名和GET提交的參數,A=B只中的A是參數名,B是參數值,多個參數之間用&分割。一般來說,瀏覽器處理的URL最大限度長度爲1024B,所以GET方法提交參數的長度由限制。

“post”方法提交的數據會附在正文上,一般請求正文的長度是沒有限制的,但表單中所能處理的長度一般爲100k(不同協議不同瀏覽器不一樣),而且需要考慮下層報文的傳輸效率,不推薦過長。

所以GET方法可以用來傳輸一些可以公開的參數信息,解析也比較方便,如百度的搜索的關鍵詞,而POST方法可以用來提交一個用戶的敏感信息(如果不使用HTTPS加密,報文正文仍舊是明文,容易被人截獲讀取

比較GET與POST
在這裏插入圖片描述
1、HTTP 只有POST和GET 兩種命令模式;
2、 POST 是被設計用來向上放東西的,而GET是被設計用來從服務器取東西的,GET也能夠向服務器傳送較少的數據,而Get之所以也能傳送數據,只是用來設計告訴服務器,你到底需要什麼樣的數據.POST的信息作爲HTTP 請求的內容,而GET是在HTTP 頭部傳輸的;
3、POST與GET在HTTP 中傳送的方式不同,GET的參數是在HTTP 的頭部傳送的,而Post的數據則是在HTTP 請求的內容裏傳送;
4、POST傳輸數據時,不需要在URL中顯示出來,而GET方法要在URL中顯示;
5、 GET方法由於受到URL長度的限制,只能傳遞大約1024字節;POST傳輸的數據量大,可以達到2M;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章