使用CORS

时间:2017-11-09 19:09:25

标签: google-chrome firefox cors fetch http-redirect

我正在使用Fetch()编写API调用以从另一个域下载文件。过程是:fetch()方法在DomainA中调用DomainB中的API,然后API返回带有位于repsonse标头中的位置的响应,该位置是DomainC的URL。

在Chrome和IE浏览器中,效果很好。根据网络检查,我们可以在这里看到3个http请求。

  • 甲。对API的OPTIONS请求,响应状态代码200;
  • B中。对API的GET请求,响应状态代码为302和 在响应Header中,location属性包含目标文件
    location(http url)。
  • ℃。请求目标文件位置以下载文件。

但在Firefox和Edge中,我们只能看到请求A)和B)。他们的反应都是预料之中的。虽然没有第三个下载数据的请求。在调试中,我们可以看到fetch()。catch(error){}中抛出错误,错误是TypeError: 在Firefox中:

  • TypeError:尝试获取资源时出现NetworkError。 In Edge:
  • TypeError:无法获取

我刚刚就此问题进行了一些调查。 根据{{​​3}},它应该可以正常工作,因为CORS配置正确。我猜Firefox或Edge可能会实现他们的原生fetch()方法,这会导致失败。

有谁知道这里发生了什么?感谢。

0 个答案:

没有答案