HTTP - GET和POST的區別

來源:互聯網
上載者:User

標籤:http   os   使用   資料   size   演算法   伺服器   res   學習   

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

  1. 語義不同
    在HTTP協議中,最初規定GET是用來查詢或者擷取資料,唯讀,POST用於修改資料,可寫。因此可以看到兩種方式的使用情境上就有很大的區別,在RESTful中更是強調了這兩種HTTP請求方式目的。規定是死的,人是活的,所以很多人為了方便GET也用於修改資料,比如刪除某個記錄,這樣很容易被CSRF,題外話。
  2. 發送資料
    HTTP協議中,GET和POST都可以先伺服器發送資料,GET的提交的資料只能在URL中表示,而URL只允許部分可見字元,其他字元都需要轉換%xx的形式;POST提交的資料可以在URL中,也可以在BODY裡,在BODY裡面的資料可以是URLEncoded的普通資料,同樣是可以是直接的二進位流資料,這樣可以剩下不少流量。一個位元組變成%xx,長度就是原來的三倍了。
  3. 長度限制
    在HTTP協議中,GET和POST提交的資料長度是沒有限制的。但是一般的瀏覽器和伺服器軟體都會限制URL的長度,因為一般伺服器會把URL當成字串來進行使用,一個超長的字串肯定會影響到伺服器的效能。而POST提交資料雖然會比GET的資料大很多,但是一般伺服器還是會限制其大小,在nginx中,有一個配置項為client_max_body_size就是來設定POST的body資料大小的,有興趣的朋友可以試一下。
  4. 安全性
    安全性和這兩種方式沒有任何關係。資料在HTTP上面走,肯定會被別人嗅探到,關鍵還是看你對資料的加密程度和演算法了。上面說道了GET進行一些寫操作容易被csrf,其實只要在GET請求中帶上一些防禦csrf的措施,那就不會被CSRF攻擊了。反之如果使用的是POST方式,但是沒有部署anti-CSRF方案的話,同樣會被csrf攻擊的。

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

HTTP - GET和POST的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.