亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 POST 請求中使用查詢字符串是一種不好的做法嗎?

在 POST 請求中使用查詢字符串是一種不好的做法嗎?

哆啦的時光機 2023-03-24 17:04:36
有一個系統將 POST 請求從前端發送到后端。這些 POST 請求不使用正文將數據傳遞給服務器;相反,它在 URL 參數中使用查詢字符串。這些請求不發送文件或 JSON,僅發送幾個字符串參數。W3C 沒有描述這種情況https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html對 POST 請求使用查詢字符串是否是一種不好的做法,是否出于安全、性能或體系結構的原因使用它會產生任何負面影響?是否有任何約定為不同類型的請求定義正文或查詢字符串的用法?
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

提醒:2014 年,RFC2616 被多個 RFC (7230-7237) 取代。

在 POST 請求中使用查詢字符串是一種不好的做法嗎?

如果您知道自己在做什么,則不會。

從機械上講,一切都很好:我們是否允許將 POST 與包含查詢部分的目標 uri 一起使用?是的。我們可以使用帶有空請求主體的 POST 嗎?是的。我們可以同時做這兩件事嗎?是的。

困難的部分:此 POST 請求是否會使緩存中的正確表示無效?

當服務器對不安全請求(POST 是一種不安全請求方法)返回非錯誤響應時,就會發生緩存失效。無效的表示是那些匹配不安全請求的目標 uri 的表示。

GET /foo?a=b HTTP/2.0
POST /foo?a=b HTTP/2.0

這里,如果 POST 成功,則 GET 請求成功后緩存的表示將在緩存中失效。

GET /foo HTTP/2.0
POST /foo?a=b HTTP/2.0

在這里,有效的請求 uri 是不一樣的,這意味著通用組件不會使緩存的/foo.


查看完整回答
反對 回復 2023-03-24
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

在 POST 請求的 URL 中使用查詢參數沒有任何問題,無論是否有請求主體。如果它對您的請求具有語義意義,那很好。POST 方法本身具有與 GET 不同的語義含義,它不需要請求主體才有用,而且 URL 也與此不同。一個經典的例子可能是:

POST /foo/bar?token=83q2fn2093c8jm203

即,通過 URL 傳遞某種令牌。

這里沒有一般的安全問題,因為任何可以攔截此 POST 請求以讀取 URL 的人也可以讀取其正文數據;你很難找到一個允許他們讀取 URL 而不是正文的攻擊者。但是,URL 通常會記錄在服務器訪問日志和瀏覽器歷史記錄中,而請求主體則不會;這可能值得考慮也可能不值得考慮,具體取決于您在這些參數中傳輸的信息以及誰有權訪問這些日志。


查看完整回答
反對 回復 2023-03-24
  • 2 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號