2 回答

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
.

TA貢獻1811條經驗 獲得超5個贊
在 POST 請求的 URL 中使用查詢參數沒有任何問題,無論是否有請求主體。如果它對您的請求具有語義意義,那很好。POST 方法本身具有與 GET 不同的語義含義,它不需要請求主體才有用,而且 URL 也與此不同。一個經典的例子可能是:
POST /foo/bar?token=83q2fn2093c8jm203
即,通過 URL 傳遞某種令牌。
這里沒有一般的安全問題,因為任何可以攔截此 POST 請求以讀取 URL 的人也可以讀取其正文數據;你很難找到一個允許他們讀取 URL 而不是正文的攻擊者。但是,URL 通常會記錄在服務器訪問日志和瀏覽器歷史記錄中,而請求主體則不會;這可能值得考慮也可能不值得考慮,具體取決于您在這些參數中傳輸的信息以及誰有權訪問這些日志。
添加回答
舉報