【问题标题】:Native ajax call does not redirect on 302本机 ajax 调用不会在 302 上重定向
【发布时间】:2018-10-10 01:01:21
【问题描述】:

我已经搜索了好几个小时了。我在 Stackoverflow 上阅读了十几个“答案”,所有这些都使用 jQuery。

这是常见的答案...

ajax 请求将跟随重定向 afaik

好吧,它没有。

我正在尝试通过本机 JS AJAX 从表单发送 PUT

[求求你,不要告诉我使用 jQuery。我通过 PUT 在 jQuery 中发现了一个错误 (1) 所以我要绕过它]

这是我的代码 sn-p...

  var xhr = new XMLHttpRequest();
  xhr.open(method, url);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send(data);
  xhr.onload = function (e) {
    if (xhr.readyState === 4) {
      if (xhr.status === 200) {
        console.log(xhr.responseText);
      } else {
        console.error(xhr.statusText);
      }
    }
  };
  xhr.onerror = function (e) {
    console.error(xhr.statusText);
  };

这个块很好用,我可以毫无问题地发布、放置和删除。服务端接收到数据并按照发送的METHOD更新DB就好了。

我的(基于 SLIM 的)PHP 成功完成后,会返回 302 和要访问的 URL。

此过程使用 POSTMAN 访问 PHP,然后转到正确的页面。

打开 Chrome 工具/网络,它显示 PHP 返回 302 而不是 200

我的响应对象在 responseText 属性中包含页面的完整 HTML。

有趣的是,如果我硬编码了一个错误的 URL,浏览器会正常访问我的 404 页面。

你的想法? (请不要问我或告诉我使用 jQuery)

编辑/附录-----------

我发现重定向使用的方法与原始调用相同。

我在做

 PUT /user/1

重定向正在做

 PUT http://myserver.test/

这是正确的去处。现在我了解了 405。

我没有定义 PUT 路由,因此是 405。

我创建了一个 PUT 路由,它在 POSTMAN 中工作,但在 Chrome 和 Firefox 中仍然给我一个 405。

我有 2 个问题需要解决: 1) 更改重定向上的 METHOD 2) 找出浏览器不喜欢 307 的原因

【问题讨论】:

  • Opening Chrome Tools/Network, it shows that the PHP is returning a 302 and than a 200 我有点困惑,你解释它做什么,就是你想要它做什么..
  • 我正在寻找浏览器跳转到304中定义的URI。
  • 你的意思是返回307,304没有修改。 302 是一个重定向,但以弄乱请求而闻名。
  • 是的,我错过了 304,我的意思是 302。我更正了。是的,在这种情况下,307 更有意义。现在我得到了 307,然后是 405。进步!差不多

标签: javascript ajax redirect httpresponse http-redirect


【解决方案1】:

我找到了“一个”解决方案。我不确定我是否喜欢它,但是...

  var xhr = new XMLHttpRequest();
  xhr.open(method, url);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send(data);
  xhr.onload = function (e) {
    if (xhr.readyState === 4) {
        window.location.replace(xhr.responseURL);  // <---- solution
    }
  };

【讨论】:

    猜你喜欢
    • 2020-07-18
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2015-05-13
    • 2011-09-09
    • 2015-07-23
    • 2018-03-30
    相关资源
    最近更新 更多