2016-07-24 180 views
0

因此,我最近一直在使用fetch獲取我的ajax調用,並發現DELETE - 在我的情況下重定向的請求302實際上一直向服務器重定向的目標url發送刪除請求至。javascript fetch刪除重定向請求

根據https://fetch.spec.whatwg.org/#http-redirect-fetch的規範要求重定向類型POST應使用GET來獲取即將到來的url。

那麼對於這個問題,不應該像在這裏一樣刪除/放置行爲嗎?或者我錯過了什麼?這是我可以解決的事情,而不會恢復到舊的XMLHttpRequest或手動處理重定向?

回答

0

將請求類型從POST更改爲GET以響應302響應是舊瀏覽器具有的漏洞,以及現代瀏覽器爲了向後兼容性而繼續實施的缺陷。

由於他們無法發送DELETE請求,因此正確獲取302s並將其視爲實際重定向。

由於您要轉換爲GET請求,因此請使用303 See Other響應。 (在HTTP 1.1中引入了303和307來處理302的歧義)。

可以使用GET方法在另一個URI下找到對請求的響應。當收到響應POST(或PUT/DELETE)的響應時,客戶端應該假定服務器已經收到數據並且應該發出一個帶有單獨GET消息的重定向。

- https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection