Javascript CORS获取response.status = 0

时间:2017-02-18 22:05:33

标签: javascript cors fetch

我正在从域A到域B上的图像进行提取请求。 我在域B上设置了正确的标头(Access-Control-Allow-Origin:*)

现在,如果我验证响应状态(response.status),我总是获得状态0。 但是,如果我签入chrome-debugger,我可以看到收到状态为200的图像。

我的用例是决定是否根据状态代码缓存资源。由于域B只包含静态资源,并且缓存应该是永久性的,我认为如果状态代码不正确,最好不要缓存(但是)。

有谁知道我为什么会这样做?

编辑:

  • 这两个域都是https
  • 这是代码段:

    fetch(e.request).then(function(response){
     console.log(e.request.url+' - '+response.status);
    }
    

1 个答案:

答案 0 :(得分:0)

好的,我已经找到了答案,我已经在这几个小时内一直在努力。

e.request来自服务工作者,似乎请求模式默认设置为“导航”。这必须是'cors'

我已经创建了一个这样的新请求:

var request = new Request(e.request.url, {
  method: e.request.method,
  headers: e.request.headers,
  mode: 'cors',
  redirect: 'manual'});

对我而言,在没有cors-mode的情况下允许使用cors-content似乎很奇怪,但状态代码仍会被修改。

如果有人知道这可能是什么原因?