为什么fetch返回302状态码而XHR不返回?

3
我正在使用fetch查询我的WordPress REST API端点。但是,每个使用fetch发出的请求都以302状态码的无限循环结束,直到fetch最终因TOO_MANY_REDIRECTS错误而失败。

illustration of problem

这是在Chrome 56上使用本地fetch。但是当我使用浏览器访问端点,使用XHR或Postman时,我总是得到状态码200。
另一方面,XHR...

XHR doesn't suffer from this problem

与此问题相关的代码:
  static checkStatus(email = null) {
    const cookie = Cookies.get('cookiename');
    const data = email || cookie;

    if (!cookie && !email) {
      return Promise.reject(new Error('No data given.'));
    }

    // This works.
    return new Promise((resolve, reject) => {
      request({
        url: `/wp-json/woo/donate/status/?email=${data}`,
        method: 'GET',
        success: (response) => {
          resolve(response);
        },
        error: (error) => {
          reject(error);
        }
      })
    });

    // This doesn't.
    return fetch(`/wp-json/woo/donate/status/?email=${data}`, {
      method: 'GET',
    });
  }

请注意,我的代码中实际上没有两个连续的返回语句,这只是为了演示。我正在使用request()作为XHR的包装器,您可以在此处找到其源代码
那么我该怎么解决呢?我知道fetch仍然是“实验性的”,但我已经在几个已经发布的项目中使用它,通过打包一个polyfill来支持尚未支持它的浏览器。这是一个新的东西。

1
在有人问之前,我使用/wp-json或者/wp-json/得到的结果是一样的。 - Christian
1个回答

2

通过“重建”我的本地 Vagrant 机器并重新启动它来解决了这个问题。

这次,关闭再打开修复了这个问题。


我遇到了完全相同的问题。我想我会尝试一样的方法。 - Kyle Calica-St

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接