HTTP GET和POST的區別

2021-09-08 10:28:22 字數 884 閱讀 6996

網上有很多文章介紹這兩種http請求的區別,我也不懂,主要還是看了一些文章,在這裡寫下一些筆記。

語義不同

在http協議中,最初規定get是用來查詢或者獲取資料,唯讀,post用於修改資料,可寫。因此可以看到兩種方式的使用場景上就有很大的區別,在restful中更是強調了這兩種http請求方式目的。規定是死的,人是活的,所以很多人為了方便get也用於修改資料,比如刪除某個記錄,這樣很容易被csrf,題外話。

傳送資料

http協議中,get和post都可以先伺服器傳送資料,get的提交的資料只能在url中表示,而url只允許部分可見字元,其他字元都需要轉換%xx的形式;post提交的資料可以在url中,也可以在body裡,在body裡面的資料可以是urlencoded的普通資料,同樣是可以是直接的二進位製流資料,這樣可以剩下不少流量。乙個位元組變成%xx,長度就是原來的三倍了。

長度限制

在http協議中,get和post提交的資料長度是沒有限制的。但是一般的瀏覽器和伺服器軟體都會限制url的長度,因為一般伺服器會把url當成字串來進行使用,乙個超長的字串肯定會影響到伺服器的效能。而post提交資料雖然會比get的資料大很多,但是一般伺服器還是會限制其大小,在nginx中,有乙個配置項為client_max_body_size就是來設定post的body資料大小的,有興趣的朋友可以試一下。

安全性

安全性和這兩種方式沒有任何關係。資料在http上面走,肯定會被別人嗅探到,關鍵還是看你對資料的加密程度和演算法了。上面說道了get進行一些寫操作容易被csrf,其實只要在get請求中帶上一些防禦csrf的措施,那就不會被csrf攻擊了。反之如果使用的是post方式,但是沒有部署anti-csrf方案的話,同樣會被csrf攻擊的。

好了,我的筆記寫完了,有興趣的朋友可以拍磚。哈哈,交流學習下。

Http Get和Post的區別

get和post是http請求的兩種基本方法,要說它們的區別,接觸過web開發的人都能說出一二。最直觀的區別就是get把引數包含在url中,post通過request body傳遞引數。你可能自己寫過無數個get和post請求,或者已經看過很多權威 總結出的他們的區別,你非常清楚知道什麼時候該用什麼...

HTTP get和post的區別

get和post是http與伺服器互動的方式,說到方式,其實總共有四種 put,delete,post,get。他們的作用分別是對伺服器資源的增,刪,改,查。所以,get是獲取資料,post是修改資料。但是,現在大家都不這麼幹了!只用乙個方式就可以做增刪查減的操作。區別分析 get把請求的資料放在u...

HTTP GET和POST的區別

post和get的差別其實是很大的。語義上,get是獲取指定url上的資源,是讀操作,重要的一點是不論對某個資源get多少次,它的狀態是不會改變的,在這個意義上,我們說get是安全的 不是被密碼學或者資料保護意義上的安全 因為get是安全的,所以get返回的內容可以被瀏覽器,cache伺服器快取起來...