發送表單用get跟post看起來好像都無所謂,然而事實並非如此,使用GET的風險如下:
機密資訊為何不宜用GET,是因為由GET方法提交的表單會將欄位的key,value顯示於URL上,想像一下如果小明借用你的電腦,查看你的網頁歷史紀錄時就可以看到你的帳密了,多可怕!
再來就是如果有用log存下url紀錄,那你送出的資訊也就會在log中展露無遺。
URL在不同瀏覽器上都有其長度限制,在伺服器也一樣,像是nginx的url長度限制:
error code: 414, uri too large
當然用POST還不夠,如果沒有加密的話那如果有人在監聽還是能看到body中的內容,這就是為何需要HTTPS,確保發送的表單內容只有發送者跟接收者能夠解密看到正確明文,避免有人從中偷窺。
在做查詢的時候就用GET,這符合restful API,像是產品搜尋或google搜尋。
不過要注意的是查詢帶的querystring會不會太龐大,是不是可能會超過url長度的限制