【问题标题】:javascript fetch delete request with redirectjavascript 使用重定向获取删除请求
【发布时间】:2016-11-28 03:01:49
【问题描述】:

所以我最近一直在使用 fetch 进行我的 ajax 调用,发现在我的情况下被重定向的 DELETE-requests 302 实际上一直在向服务器重定向到的目标 url 发送删除请求。

根据https://fetch.spec.whatwg.org/#http-redirect-fetch 的规范,被重定向的POST 类型的请求应使用GET 来获取即将到来的网址。

所以对于这个问题,不应该删除/放置与此处发布相同的方式吗?还是我错过了什么?我可以在不恢复到旧的 XMLHttpRequest 或手动处理重定向的情况下解决这个问题吗?

【问题讨论】:

    标签: javascript fetch


    【解决方案1】:

    将请求类型从 POST 更改为 GET 以获得 302 响应是旧浏览器存在的错误,现代浏览器继续实施该错误以实现向后兼容性。

    由于他们无法发送 DELETE 请求,因此 fetch 正确实现了 302 并将其视为实际重定向。

    由于您要转换为 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多