前端 為何要用POST而非GET

前端 為何要用POST而非GET

更新於 發佈於 閱讀時間約 1 分鐘

發送表單用get跟post看起來好像都無所謂,然而事實並非如此,使用GET的風險如下:

安全性問題

機密資訊為何不宜用GET,是因為由GET方法提交的表單會將欄位的key,value顯示於URL上,想像一下如果小明借用你的電腦,查看你的網頁歷史紀錄時就可以看到你的帳密了,多可怕!

再來就是如果有用log存下url紀錄,那你送出的資訊也就會在log中展露無遺。


大小限制

URL在不同瀏覽器上都有其長度限制,在伺服器也一樣,像是nginx的url長度限制:

error code: 414, uri too large


當然用POST還不夠,如果沒有加密的話那如果有人在監聽還是能看到body中的內容,這就是為何需要HTTPS,確保發送的表單內容只有發送者跟接收者能夠解密看到正確明文,避免有人從中偷窺。


那什麼時候該用GET呢?

在做查詢的時候就用GET,這符合restful API,像是產品搜尋或google搜尋。

不過要注意的是查詢帶的querystring會不會太龐大,是不是可能會超過url長度的限制

avatar-img
JHIHLEI LIN的沙龍
4會員
10內容數
分享感情與生活的故事,期望我們都能在愛與被愛的路上感到幸福,並且在這個只有活一次的人生裡好好的活成自己喜歡的樣子
留言
avatar-img
留言分享你的想法!
JHIHLEI LIN的沙龍 的其他內容
第一份正職工作 在iot公司擔任後端工程師,一上工就使用先前沒用過的php/laravel,也馬上負責公司產品的架構規劃,先前資料庫只有簡單記載使用者跟使用者的一些設定,很多地方有資料不一致的問題,產品內容還有很多實體的關係沒有被定義進資料庫都是這次改版我要做的事情。 改版納入公司、機器
在沒有分環境之前,每一隻lambda只有一個code console給所有人一起編輯,開發好了就deploy,根據設定的trigger觸發執行。 現在我們希望能夠在code console開發,然後deploy到不同的stage,目標是不同stage的api gateway能夠調用該lambda的
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
第一份正職工作 在iot公司擔任後端工程師,一上工就使用先前沒用過的php/laravel,也馬上負責公司產品的架構規劃,先前資料庫只有簡單記載使用者跟使用者的一些設定,很多地方有資料不一致的問題,產品內容還有很多實體的關係沒有被定義進資料庫都是這次改版我要做的事情。 改版納入公司、機器
在沒有分環境之前,每一隻lambda只有一個code console給所有人一起編輯,開發好了就deploy,根據設定的trigger觸發執行。 現在我們希望能夠在code console開發,然後deploy到不同的stage,目標是不同stage的api gateway能夠調用該lambda的
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam