當前位置:首頁 » 硬碟大全 » httpget和post緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

httpget和post緩存

發布時間: 2023-01-04 18:02:49

『壹』 post和get的區別

區別一:語義上的區別

1、Get向伺服器請求數據。依照HTTP協議,get 是用來請求數據。

2、Post向伺服器發數據。依照HTTP協議,Post的語義是向伺服器添加數據,也就是說按照Post的語義,該操作是會修改伺服器上的數據的。

區別二:伺服器請求的區別

1、Get請求是可以被緩存的,舉個例子,你訪問.com,就是向的伺服器發了個Get請求,這個請求的返回,也就是的主頁頁面內容,會被緩存在你瀏覽器中,短時間再次訪問,其實是拿到的瀏覽器中的緩存內容。另外Get請求只能接收ASCII碼的回復

2、Post請求是不可以被緩存的。對於Post方式提交表單,刷新頁面瀏覽器會彈出提示框 「是否重新提交表單」,Post可以接收二進制等各種數據形式,所以如果要上傳文件一般用Post請求。

區別三:參數放請求頭和請求體的差別

1、Get請求通常沒有請求體(當然這也是可以由程序猿心情改變的),在TCP傳輸中只需傳輸一次(而不是一個包),所以Get請求效率相對高。

2、Post請求將數據放在請求體中,而實際傳輸中,會先傳輸完請求頭,再傳輸請求體,是分為兩次傳輸的(而不是兩個包)。Post請求頭會比Get更小(一般不帶參數),請求頭更容易在一個TCP包中完成傳輸,更何況請求頭中有Content-Length的標識,可以更好地保證Http包的完整性。

『貳』 http請求中get和post請求的區別

一、原理區別

一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設置Method指定提交方式為GET或者POST提交方式,默認為GET提交方式。

HTTP定義了與伺服器交互的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產生什麼動作。不會產生動作意味著GET和HEAD的HTTP請求不會在伺服器上產生任何結果。但是安全方法並不是什麼動作都不產生,這里的安全方法僅僅指不會修改信息。

根據HTTP規范,POST可能會修改伺服器上的資源的請求。比如CSDN的博客,用戶提交一篇文章或者一個讀者提交評論是通過POST請求來實現的,因為再提交文章或者評論提交後資源(即某個頁面)不同了,或者說資源被修改了,這些便是「不安全方法」。

二、表現形式區別

搞清楚了兩者的原理區別後,我們來看一下在實際應用中的區別。

首先,我們先看一下HTTP請求的格式:

<method><request-URL><version>

<headers>

<entity-body>

<method> <request-URL> <version>

<headers>

<entity-body>

在HTTP請求中,奇異行必須是一個請求行,包括請求方法,請求URL,報文所用HTTP版本信息。緊接著是一個herders小節,可以有零個或一個首部,用來說明伺服器要使用的附加信息。在首部之後就是一個空行,最後就是報文實體的主體部分,包含一個由任意數據組成的數據塊。但是並不是所有的報文都包含實體的主體部分。

GET請求實例:

GEThttp://weibo.com/signup/signup.php?inviteCode=2388493434

Host:weibo.com

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

GET http://weibo.com/signup/signup.php?inviteCode=2388493434

Host: weibo.com

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

POST請求實例:

POST/inventory-check.cgiHTTP/1.1

Host:www.joes-hardware.com

Content-Type:text/plain

Content-length:18

item=bandsaw2647

POST /inventory-check.cgi HTTP/1.1

Host: www.joes-hardware.com

Content-Type: text/plain

Content-length: 18

item=bandsaw 2647

接下來看看兩種請求方式的區別:

1、GET請求,請求的數據會附加在URL之後,以?分割URL和傳輸數據,多個參數用&連接。URL的編碼格式採用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字元都要編碼之後再傳輸。

POST請求:POST請求會把請求的數據放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸數據。

因此,GET請求的數據會暴露在地址欄中,而POST請求則不會。

2、傳輸數據的大小

在HTTP規范中,沒有對URL的長度和傳輸的數據大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和伺服器對URL的長度有限制。因此,在使用GET請求時,傳輸數據會受到URL長度的限制。

對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個伺服器會規定對POST提交數據大小進行限制,Apache、IIS都有各自的配置。

3、安全性

POST的安全性比GET的高。這里的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不修改伺服器的數據。比如,在進行登錄操作,通過GET請求,用戶名和密碼都會暴露再URL上,因為登錄頁面有可能被瀏覽器緩存以及其他人查看瀏覽器的歷史記錄的原因,此時的用戶名和密碼就很容易被他人拿到了。除此之外,GET請求提交的數據還可能會造成Cross-site request frogery攻擊

4、HTTP中的GET,POST,SOAP協議都是在HTTP上運行的

三、HTTP響應

HTTP響應報文的格式

<version><status><reason-phrase>

<headers>

<entity-body>

<version> <status> <reason-phrase>

<headers>

<entity-body>

status,狀態碼描述了請求過程中發生的情況

reson-phrase 是數字狀態碼的可讀版本

常見的狀態碼以及含義如下:

200 OK 伺服器成功處理請求

301/302 Moved Permanently(重定向)請求的URL已移走。響應報文中應該包含一個Location URL,說明資源現在所處的位置

304 Not Modified(未修改) 客戶的緩存資源是最新的,要客戶端使用緩存內容

404 Not Found 未找到資源

501 Internal Server Error 伺服器遇到錯誤,使其無法對請求提供服務

HTTP響應示例

HTTP/1.1 200 OK

[plain] view plain print?

Content-type:text/plain

Content-length:12

HelloWorld!

Content-type: text/plain

Content-length: 12

Hello World!