2016-07-24 179 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