主頁 > 知識庫 > 簡單介紹HTTP請求方式中8種請求方法

簡單介紹HTTP請求方式中8種請求方法

熱門標(biāo)簽:地圖標(biāo)注資源分享注冊 合肥阿里辦理400電話號 北京外呼系統(tǒng)咨詢電話 廊坊地圖標(biāo)注申請入口 襄陽外呼增值業(yè)務(wù)線路解決方案 海南人工外呼系統(tǒng)哪家好 怎么去掉地圖標(biāo)注文字 慶陽外呼系統(tǒng)定制開發(fā) 高德地圖標(biāo)注公司位置需要錢嗎

簡單介紹

HTTP是超文本傳輸協(xié)議,其定義了客戶端與服務(wù)器端之間文本傳輸?shù)囊?guī)范。HTTP默認(rèn)使用80端口,這個端口指的是服務(wù)端的端口,而客戶端使用的端口是動態(tài)分配的。當(dāng)我們沒有指定端口訪問時,瀏覽器會默認(rèn)幫我們添加80端口。我們也可以自己指定訪問端口如:http://www.ip138.com:80。 需要注意的是,現(xiàn)在大多數(shù)訪問都使用了HTTPS協(xié)議,而HTTPS的默認(rèn)端口為443,如果使用80端口訪問HTTPS協(xié)議的服務(wù)器可能會被拒絕。

HTTP請求的方法:HTTP/1.1協(xié)議中共定義了八種方法(有時也叫“動作”),來表明Request-URL指定的資源不同的操作方式HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

1、OPTIONS返回服務(wù)器針對特定資源所支持的HTTP請求方法,也可以利用向web服務(wù)器發(fā)送‘*'的請求來測試服務(wù)器的功能性2、HEAD向服務(wù)器索與GET請求相一致的響應(yīng),只不過響應(yīng)體將不會被返回。這一方法可以再不必傳輸整個響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)小消息頭中的元信息。3、GET向特定的資源發(fā)出請求。注意:GET方法不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中,例如在Web Application中,其中一個原因是GET可能會被網(wǎng)絡(luò)蜘蛛等隨意訪問。Loadrunner中對應(yīng)get請求函數(shù):web_link和web_url4、POST向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。 Loadrunner中對應(yīng)POST請求函數(shù):

web_submit_data,web_submit_form5、PUT向指定資源位置上傳其最新內(nèi)容6、DELETE請求服務(wù)器刪除Request-URL所標(biāo)識的資源7、TRACE回顯服務(wù)器收到的請求,主要用于測試或診斷8、CONNECTHTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。注意:1)方法名稱是區(qū)分大小寫的,當(dāng)某個請求所針對的資源不支持對應(yīng)的請求方法的時候,服務(wù)器應(yīng)當(dāng)返回狀態(tài)碼405(Mothod Not Allowed);當(dāng)服務(wù)器不認(rèn)識或者不支持對應(yīng)的請求方法時,應(yīng)返回狀態(tài)碼501(Not Implemented)。2)HTTP服務(wù)器至少應(yīng)該實現(xiàn)GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務(wù)器支持?jǐn)U展自定義的方法。HTTP工作原理

HTTP協(xié)議定義Web客戶端如何從Web服務(wù)器請求Web頁面,以及服務(wù)器如何把Web頁面?zhèn)魉徒o客戶端。HTTP協(xié)議采用了請求/響應(yīng)模型??蛻舳讼蚍?wù)器發(fā)送一個請求報文,請求報文包含請求的方法、URL、協(xié)議版本、請求頭部和請求數(shù)據(jù)。服務(wù)器以一個狀態(tài)行作為響應(yīng),響應(yīng)的內(nèi)容包括協(xié)議的版本、成功或者錯誤代碼、服務(wù)器信息、響應(yīng)頭部和響應(yīng)數(shù)據(jù)。

HTTP 請求/響應(yīng)的步驟:

客戶端連接到Web服務(wù)器->發(fā)送Http請求->服務(wù)器接受請求并返回HTTP響應(yīng)->釋放連接TCP連接->客戶端瀏覽器解析HTML內(nèi)容

1、客戶端連接到Web服務(wù)器

一個HTTP客戶端,通常是瀏覽器,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個TCP套接字連接。例如,http://www.baidu.com

2、發(fā)送HTTP請求

通過TCP套接字,客戶端向Web服務(wù)器發(fā)送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4部分組成。

3、服務(wù)器接受請求并返回HTTP響應(yīng)Web服務(wù)器解析請求,定位請求資源。服務(wù)器將資源復(fù)本寫到TCP套接字,由客戶端讀取。一個響應(yīng)由狀態(tài)行、響應(yīng)頭部、空行和響應(yīng)數(shù)據(jù)4部分組成。4、釋放連接TCP連接

若connection 模式為close,則服務(wù)器主動關(guān)閉TCP連接,客戶端被動關(guān)閉連接,釋放TCP連接;若connection 模式為keepalive,則該連接會保持一段時間,在該時間內(nèi)可以繼續(xù)接收請求;

5、客戶端瀏覽器解析HTML內(nèi)容

客戶端瀏覽器首先解析狀態(tài)行,查看表明請求是否成功的狀態(tài)代碼。然后解析每一個響應(yīng)頭,響應(yīng)頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集??蛻舳藶g覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語法對其進(jìn)行格式化,并在瀏覽器窗口中顯示。

HTTP請求消息Request客戶端發(fā)送一個HTTP請求到服務(wù)器的請求消息包括以下格式請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)四個部分組成。

請求行以一個方法符號開頭,以空格分開,后面跟著請求的URI和協(xié)議的版本Get請求例子,使用Charles抓取的request:

GET /562f25980001b1b106000338.jpg HTTP/1.1
Host  img.mukewang.com
User-Agent  Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept  image/webp,image/*,*/*;q=0.8
Referer  http://www.imooc.com/
Accept-Encoding  gzip, deflate, sdch
Accept-Language  zh-CN,zh;q=0.8

第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的HTTP版本.

GET說明請求類型為GET,[/562f25980001b1b106000338.jpg]為要訪問的資源,該行的最后一部分說明使用的是HTTP1.1版本。

第二部分:請求頭部,緊接著請求行(即第一行)之后的部分,用來說明服務(wù)器要使用的附加信息

從第二行起為請求頭部,HOST將指出請求的目的地.User-Agent,服務(wù)器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎(chǔ).該信息由你的瀏覽器來定義,并且在每個請求中自動發(fā)送等等

第三部分:空行,請求頭部后面的空行是必須的

即使第四部分的請求數(shù)據(jù)為空,也必須有空行。

第四部分:請求數(shù)據(jù)也叫主體,可以添加任意的其他數(shù)據(jù)。

這個例子的請求數(shù)據(jù)為空。

POST請求例子,使用Charles抓取的request:

POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive

name=Professional%20Ajaxpublisher=Wiley

第一部分:請求行,第一行明了是post請求,以及http1.1版本。
第二部分:請求頭部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:請求數(shù)據(jù),第八行。

HTTP請求消息Response

一般情況下,服務(wù)器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應(yīng)消息。

HTTP響應(yīng)也由四個部分組成,分別是:狀態(tài)行、消息報頭、空行和響應(yīng)正文

例子

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 goes here-->
   /body>
/html>

第一部分:狀態(tài)行,由HTTP協(xié)議版本號, 狀態(tài)碼, 狀態(tài)消息 三部分組成。

第一行為狀態(tài)行,(HTTP/1.1)表明HTTP版本為1.1版本,狀態(tài)碼為200,狀態(tài)消息為(ok)

第二部分:消息報頭,用來說明客戶端要使用的一些附加信息

第二行和第三行為消息報頭,

Date:生成響應(yīng)的日期和時間;Content-Type:指定了MIME類型的HTML(text/html),編碼類型是UTF-8

第三部分:空行,消息報頭后面的空行是必須的第四部分:響應(yīng)正文,服務(wù)器返回給客戶端的文本信息。

空行后面的html部分為響應(yīng)正文。

請求返回狀態(tài)碼:

200OK 當(dāng)您的操作將在響應(yīng)正文中返回數(shù)據(jù)時,出現(xiàn)此結(jié)果。

204No Content當(dāng)您的操作成功,但不在響應(yīng)正文中返回數(shù)據(jù)時,出現(xiàn)此結(jié)果。

304Not Modified(重定向) 當(dāng)測試實體自上次檢索以來是否被修改時,出現(xiàn)此結(jié)果。

403Forbidden 客戶端錯誤

401Unauthorized客戶端錯誤

413Payload Too Large(客戶端錯誤)當(dāng)請求長度過長時,出現(xiàn)此結(jié)果。

400BadRequest(客戶端錯誤)當(dāng)參數(shù)無效時,出現(xiàn)此結(jié)果。

404Not Found(客戶端錯誤)當(dāng)資源不存在時,出現(xiàn)此結(jié)果。

405Method Not Allowed(客戶端錯誤)由于方法和資源組合不正確而出現(xiàn)此錯誤。 例如,您不能對一個實體集合使用 DELETE 或 PATCH。

412Precondition Failed 客戶端錯誤

501Not Implemented(服務(wù)器錯誤)當(dāng)未實施某個請求的操作時,出現(xiàn)此結(jié)果。

503Service Unavailable(服務(wù)器錯誤)當(dāng) Web API 服務(wù)不可用時,出現(xiàn)此結(jié)果。

GET與POST:

 “get”方法提交的數(shù)據(jù)會直接填充在請求報文的URL上,如“https://www.baidu.com/s?ie=utf-8f=8rsv_bp=1” “?”問號劃分域名和get提交的參數(shù),A=B中的A是參數(shù)名,B是參數(shù)值,多個參數(shù)之間用進(jìn)行分割,如果參數(shù)值是中文,則會轉(zhuǎn)換成諸如%ab%12加密16進(jìn)制碼。一般來說,瀏覽器處理的URL最大限度長度為1024B(不同瀏覽器不一樣),所以GET方法提交參數(shù)長度有限制。

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

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

主要特點

1、無連接

無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。

2、無狀態(tài)

HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。

3、簡單快速

客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。

4、靈活

HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。

5、支持B/S及C/S模式

作業(yè):了解 HTTP 協(xié)議的基本知識,包括請求流程、請求方法等

  http是超文本傳輸協(xié)議,默認(rèn)端口號為80,客戶端是動態(tài)的,瀏覽器會自動默認(rèn)為80

  https默認(rèn)端口號為443

  請求方法8種

  get、post、put、delete、options、trace、connect、head

  請求流程2種分為request和response,但是他們的流程都是相同的,一個請求一個接收

  流程為:狀態(tài)行、消息報頭、空行和響應(yīng)正文

  請求響應(yīng)步驟:

  客戶端連接到Web服務(wù)器->發(fā)送Http請求->服務(wù)器接受請求并返回HTTP響應(yīng)->釋放連接TCP連接->客戶端瀏覽器解析HTML內(nèi)容

總結(jié)

以上所述是小編給大家介紹的HTTP請求方式中8種請求方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

您可能感興趣的文章:
  • 詳解java實現(xiàn)HTTP請求的三種方式
  • Android小知識之OkHttp的2種請求方式詳解
  • 淺談PHP發(fā)送HTTP請求的幾種方式
  • MVC 5限制所有HTTP請求必須是POST方式
  • java發(fā)送http get請求的兩種方式
  • python通過get,post方式發(fā)送http請求和接收http響應(yīng)的方法
  • c++實現(xiàn)發(fā)送http請求通過get方式獲取網(wǎng)頁源代碼

標(biāo)簽:株洲 綿陽 鎮(zhèn)江 商丘 臺州 哈密 平頂山 鶴崗

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《簡單介紹HTTP請求方式中8種請求方法》,本文關(guān)鍵詞  簡單,介紹,HTTP,請求,方式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《簡單介紹HTTP請求方式中8種請求方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于簡單介紹HTTP請求方式中8種請求方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章