HTTP 方法 GET 對比 POST

2021-09-26 23:51:21 字數 1586 閱讀 8926

兩種 http 請求方法:get 和 post

請注意,查詢字串(名稱/值對)是在 get 請求的 url 中傳送的:

/test/demo_form.asp?name1=value1&name2=value2
有關 get 請求的其他一些注釋:

請注意,查詢字串(名稱/值對)是在 post 請求的 http 訊息主體中傳送的:

name1=value1&name2=value2有關 post 請求的其他一些注釋:

[傳遞給伺服器資訊的方式不一樣]

get是基於url位址「問號傳參」的方式把資訊傳遞給伺服器,post是基於「請求主體」把資訊傳遞給伺服器

[get]

xhr.open('get','/temp/list?***=***&***=***')

[post]

xhr.send('***=***&***=***')

get一般應用於拿(給伺服器的會少一些),而post給伺服器的很多,如果post是基於問號傳參方式來搞會出現一些問題:url會拼接很長,瀏覽器對於url的長度有有最大限度(谷歌8kb 火狐7kb ie2kb …),超過的部分瀏覽器就把它截掉了 =>所以get請求可以基於url傳參,而post都是使用請求主體傳遞(請求主體理論上是沒有限制的,真實專案中我們會自己做大小限制,防止上傳過大資訊導致請求遲遲完不成)

[get不安全,post相對安全]

因為get是基於「問號傳參」把資訊傳遞給伺服器的,容易被駭客進行url劫持,post是基於請求主體傳遞的,相對來說不好被劫持;所以登入、註冊等涉及安全性的互動操作,我們都應該用post請求;

[get會產生不可控制的快取,post不會]

不可控:不是想要就要,想不要就不要的,這是瀏覽器自主記憶的快取,我們無法基於js控制,真實專案中我們都會把這個快取乾掉

get請求產生快取是因為:連續多次向相同的位址(並且傳遞的引數資訊也是相同的)傳送請求,瀏覽器會把之前獲取的資料從快取中拿到返回,導致無法獲取伺服器最新的資料(post不會)

xhr.open('get',`/temp/list?lx=1000&_=$`); //=>保證每次請求的位址不完全一致:在每一次請求的末尾追加乙個隨機數即可(使用_作為屬性名就是不想和其它的屬性名衝突)
get方式需要使用request.querystring來取得變數的值

post方式通過request.form來獲取變數的值

也就是說get是通過位址列來傳值,而post是通過提交表單來傳值。

在以下情況中,請使用post請求:

1.無法使用快取檔案(更新伺服器上的檔案或資料庫)

2.向伺服器傳送大量資料(post沒有資料量限制)

3.傳送包含未知字元的使用者輸入時,post比get更穩定也更可靠

HTTP 方法 GET 對比 POST

http 方法 get 對比 post 1 什麼是 http?超文字傳輸協議 http 的設計目的是保證客戶機與伺服器之間的通訊。http 的工作方式是客戶機與伺服器之間的請求 應答協議。web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。2 兩種 http 請求方法 get 和...

HTTP 方法 GET 對比 POST

兩種最常用的 http 方法是 get 和 post。超文字傳輸協議 http 的設計目的是保證客戶機與伺服器之間的通訊。http 的工作方式是客戶機與伺服器之間的請求 應答協議。web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。舉例 客戶端 瀏覽器 向伺服器提交 http 請...

HTTP 方法 GET 對比 POST

兩種最常用的 http 方法是 get 和 post。超文字傳輸協議 http 的設計目的是保證客戶機與伺服器之間的通訊。http 的工作方式是客戶機與伺服器之間的請求 應答協議。web 瀏覽器可能是客戶端,而計算機上的網路應用程式也可能作為伺服器端。舉例 客戶端 瀏覽器 向伺服器提交 http 請...