为什么获取 return 302 状态代码但 XHR 没有?

Why does fetch return 302 status code but XHR doesn't?

我正在使用 fetch 查询我自己的 WordPress REST API 端点。但是,我使用 fetch 发出的每个请求都以 302 状态代码的无限循环结束,直到 fetch finally 出错 TOO_MANY_REDIRECTS。

这是在 Chrome 56 上,使用本机提取。但是当我使用浏览器访问端点时,使用 XHR 或 Postman,我总是得到 200 作为状态。

另一方面,XHR...

与此问题相关的代码:

  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',
    });
  }

请注意,我的代码中实际上并没有两个连续的 return 语句,这只是为了演示。我使用 request() 作为 XHR 的包装器,你可以找到 source for that here.

那么我该如何解决这个问题呢?我知道 fetch 仍然是 "experimental",但我已经通过将 polyfill 捆绑到尚不支持它的浏览器,在几个已经发布的项目中使用了它。这是一个新事物。

这个问题已被 "rebuilding" WordPress 解决,方法是销毁我的本地 Vagrant 机器,然后重新启动它。

这一次,将其打开并再次关闭就解决了问题。