get和post區別

不知名前端李小白發表於2021-10-11

get和post區別

 

 

 

 

 

 

GET

HTTP GET 方法請求指定的資源。使用 GET 的請求應該只用於獲取資料

GET請求沒有主體,在正確實現的條件下GET 方式是安全、冪等、可快取的,並且支援html表單提交

POST

 HTTP POST 方法 傳送資料給伺服器

POST請求通常是通過HTML表達傳送,並返回伺服器的修改結果

POST有請求體,POST方式是不安全、不冪等、可快取的

冪等:連續呼叫一次或者多次的效果相同(無副作用)

但連續呼叫同一個POST可能會帶來額外的影響,比如多次提交訂單

總結!

GET和POST所謂區別,只是瀏覽器廠家根據約定,做得限制而已:

  • GET是通過明文傳送資料請求,而POST是通過密文(安全)

  • GET傳輸的資料量有限,因為url的長度有限,POST則不受限

  • GET請求的引數只能是ASCII碼(中文需要URL編碼)

  • GET產生一個TCP資料包,POST產生兩個TCP資料包

    • 對於GET方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料)

    • 對於POST,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)

因為POST需要兩步,時間上消耗的要多一點,看起來GET比POST更有效。因此Yahoo團隊有推薦用GET替換POST來優化網站效能。但這是一個坑!跳入需謹慎。

為什麼?

  1. GETPOST都有自己的語義,不能隨便混用

  2. 在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視

  3. 並不是所有瀏覽器都會在POST中傳送兩次包,Firefox就只傳送一次

 get和post區別

相關文章