HTTP verb GET 和 POST 有什麼差異?

Nono's Note
Mar 16, 2021

--

Photo by Christian Wiediger on Unsplash

我想大多數人對於HTTP傳輸協定並不陌生,網路的運作透過客戶端(Client)請求與伺服器端(Server)回應來交換資源。

HTTP有八種Methods,也就是對這組資料執行什麼動作,最常見的為以下五種:

  • GET:讀取資料
  • POST:新增資料
  • PATCH:修改資料
  • PUT:修改資料
  • DELETE:刪除資料

依照字面上的意思不難懂,但實際運作的狀況GET/POST 都是透過傳送資料的方式,那差別在哪呢?「POST比GET還要安全」這是大家最直覺的想法。

事實上這也是我最一開始所認知的差異,那為什麼呢?

可以將GET比喻為明信片,因為明信片沒有信封可以裝(正常來說),所以必須將資料都寫在明信片上頭直到寫滿為止,而運送的過程中經手人都可以看光光,甚至到達信箱時你的鄰居也可以偷看到內容,洩漏度100%阿!

POST則是一封信,因為有信封(message-body),所以資料填寫內容也是遠勝GET明信片,而有信封的關係,除非有人惡意拆信(駭客攻擊),不然保密度也是大勝!

所以當我們想要夾帶資料給伺服器時,都會選用POST!目前為止,一切都很合理呀!但就是有那麼一個 What if

既然兩者都是傳輸POST也更安全,為什麼不能用POST取代GET呢?

這兩個都是傳送,但有一個小小細節,就是GET的URL會被存放在瀏覽器的歷史紀錄裡;POST則發送後什麼都沒有留下!

GET的優勢在於,GET所有信息都在URL很方便被重複使用也能夠在瀏覽器被人手動輸入(單純請求網址)

所以如果希望請求的URL可以被緩存,可以被搜尋引擎收錄,可以輕鬆轉發給他人,那就用GET!

如果你不希望有些動作輕易被他人手動輸入比方刪除功能,那就用POST!

以上是自己的小小筆記!

--

--

Nono's Note
Nono's Note

Written by Nono's Note

一位不是很厲害的前端工程師

No responses yet