App下載

HTTP的兩種常用請(qǐng)求方式GET和POST

猿友 2021-02-22 14:16:49 瀏覽數(shù) (10461)
反饋

HTTP的兩種常用請(qǐng)求方式GET和POST

HTTP:HTTP協(xié)議(HyperText Transfer),用于從萬(wàn)維網(wǎng)(WWWW:World Wide Web)服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。HTTP是一個(gè)基于 TCP/IP 通信協(xié)議來(lái)傳遞數(shù)據(jù)(HTML文件,圖片文件,查詢結(jié)果等)。

一、GET方法

使用 GET 方法時(shí),查詢字符串(名稱或鍵值對(duì))是在 GET 請(qǐng)求的 URL 中發(fā)送的:

/test/demo_form.php?name1=value1&name2=value2

說(shuō)明

  • POST 請(qǐng)求不會(huì)被緩存
  • POST 請(qǐng)求不會(huì)保留在瀏覽器歷史記錄中
  • POST請(qǐng)求的URL不能被收藏為書(shū)簽
  • POST 請(qǐng)求沒(méi)有長(zhǎng)度要求

HTTP的方法中POST向后臺(tái)傳輸數(shù)據(jù)比較可靠,POST 方法打包信息的方式與 GET 方法基本相同,但是 POST 方法不是把信息作為 URL 中 ? 字符后的文本字符串進(jìn)行發(fā)送,而是把這些信息作為一個(gè)單獨(dú)的消息進(jìn)行發(fā)送。Servlet 使用 doPost() 方法處理這種類型的請(qǐng)求。

三、GET方法與POST方法的區(qū)別

  • 在瀏覽器進(jìn)行回退操作時(shí),GET請(qǐng)求是無(wú)害的,而POST請(qǐng)求則會(huì)重新請(qǐng)求一次
  • GET請(qǐng)求參數(shù)是連接在URL后面的,而POST請(qǐng)求參數(shù)是存放在消息主體(Requestbody)內(nèi)
  • GET請(qǐng)求因?yàn)闉g覽器對(duì)url長(zhǎng)度有限制(不同瀏覽器長(zhǎng)度限制不一樣)對(duì)傳參數(shù)量有限制,而post請(qǐng)求因?yàn)閰?shù)存放Requestbody內(nèi)所以參數(shù)數(shù)量沒(méi)有限制
  • 因?yàn)镚ET請(qǐng)求參數(shù)暴露在URL上,所以安全方面POST比GET更加安全
  • GET請(qǐng)求瀏覽器會(huì)主動(dòng)緩存(Cache),POST并不會(huì),除非主動(dòng)設(shè)置
  • GET請(qǐng)求參數(shù)會(huì)保存在瀏覽器歷史記錄內(nèi),POST請(qǐng)求并不會(huì)
  • GET請(qǐng)求只能進(jìn)行URL編碼,而POST請(qǐng)求可以支持多種編碼方式
  • GET請(qǐng)求產(chǎn)生1個(gè)Tcp數(shù)據(jù)包,POST請(qǐng)求產(chǎn)生2個(gè)Tcp數(shù)據(jù)包
  • 瀏覽器在發(fā)送GET請(qǐng)求時(shí)會(huì)將請(qǐng)求頭(Header)和數(shù)據(jù)(Data)一起發(fā)送給服務(wù)器,服務(wù)器返回200狀態(tài)碼,而在發(fā)送POST請(qǐng)求時(shí),會(huì)先將Header發(fā)送給服務(wù)器,服務(wù)器返回100,之后再將Data發(fā)送給服務(wù)器,服務(wù)器返回200

說(shuō)明:

  • GET 請(qǐng)求可被緩存
  • GET 請(qǐng)求保留在瀏覽器歷史記錄中
  • GET 請(qǐng)求的URL可被收藏為書(shū)簽
  • GET 請(qǐng)求不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用
  • GET 請(qǐng)求有長(zhǎng)度限制
  • GET 請(qǐng)求只應(yīng)當(dāng)用于獲取數(shù)據(jù)

GET 方法是默認(rèn)的從瀏覽器向 Web 服務(wù)器傳遞信息的請(qǐng)求方法,它會(huì)產(chǎn)生一個(gè)很長(zhǎng)的字符串,出現(xiàn)在瀏覽器的地址欄中。GET 方法有大小限制:請(qǐng)求字符串中最多只能有 1024 個(gè)字符。Servlet 

二、POST方法

使用POST方法時(shí),查詢字符串(名稱或鍵值對(duì))是在POST請(qǐng)求的HTTP消息主體重發(fā)送的:使用 doGet()方法處理這種類型的請(qǐng)求。

POST /test/demo_form.php HTTP/1.1
Host: runoob.com
name1=value1&name2=value2

說(shuō)明

  • POST 請(qǐng)求不會(huì)被緩存
  • POST 請(qǐng)求不會(huì)保留在瀏覽器歷史記錄中
  • POST請(qǐng)求的URL不能被收藏為書(shū)簽
  • POST 請(qǐng)求沒(méi)有長(zhǎng)度要求

HTTP的方法中POST向后臺(tái)傳輸數(shù)據(jù)比較可靠,POST 方法打包信息的方式與 GET 方法基本相同,但是 POST 方法不是把信息作為 URL 中 ? 字符后的文本字符串進(jìn)行發(fā)送,而是把這些信息作為一個(gè)單獨(dú)的消息進(jìn)行發(fā)送。Servlet 使用 doPost() 方法處理這種類型的請(qǐng)求。

三、GET方法與POST方法的區(qū)別

  • 在瀏覽器進(jìn)行回退操作時(shí),GET 請(qǐng)求是無(wú)害的,而 POST 請(qǐng)求則會(huì)重新請(qǐng)求一次
  • GET 請(qǐng)求參數(shù)是連接在 URL 后面的,而POST請(qǐng)求參數(shù)是存放在消息主體(Requestbody)內(nèi)
  • GET 請(qǐng)求因?yàn)闉g覽器對(duì) url 長(zhǎng)度有限制(不同瀏覽器長(zhǎng)度限制不一樣)對(duì)傳參數(shù)量有限制,而 post 請(qǐng)求因?yàn)閰?shù)存放 Requestbody 內(nèi)所以參數(shù)數(shù)量沒(méi)有限制 
  • 因?yàn)?GET 請(qǐng)求參數(shù)暴露在URL上,所以安全方面 POST 比 GET 更加安全
  • GET 請(qǐng)求瀏覽器會(huì)主動(dòng)緩存(Cache),POST 并不會(huì),除非主動(dòng)設(shè)置
  • GET 請(qǐng)求參數(shù)會(huì)保存在瀏覽器歷史記錄內(nèi),POST 請(qǐng)求并不會(huì)
  • GET 請(qǐng)求只能進(jìn)行 URL 編碼,而 POST 請(qǐng)求可以支持多種編碼方式
  • GET 請(qǐng)求產(chǎn)生1個(gè) Tcp 數(shù)據(jù)包,POST 請(qǐng)求產(chǎn)生2個(gè) Tcp 數(shù)據(jù)包
  • 瀏覽器在發(fā)送 GET 請(qǐng)求時(shí)會(huì)將請(qǐng)求頭(Header)和數(shù)據(jù)(Data)一起發(fā)送給服務(wù)器,服務(wù)器返回200狀態(tài)碼,而在發(fā)送 POST 請(qǐng)求時(shí),會(huì)先將 Header 發(fā)送給服務(wù)器,服務(wù)器返回100,之后再將 Data 發(fā)送給服務(wù)器,服務(wù)器返回200

推薦好課:HTML微課、HTML+CSS基礎(chǔ)實(shí)戰(zhàn)HTML5新特性實(shí)戰(zhàn)


0 人點(diǎn)贊