【问题标题】:Javascript CORS fetch response.status = 0Javascript CORS 获取 response.status = 0
【发布时间】:2017-07-08 08:30:15
【问题描述】:

我正在从域 A 向域 B 上的图像发出获取请求。 我已经在域 B 上设置了正确的标头(Access-Control-Allow-Origin:*)

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

.

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

有人知道我为什么会有这种行为吗?

编辑:

  • 两个域都是 https
  • 这是sn-p的代码:

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

【问题讨论】:

  • However if i check in the chrome-debugger i can see the image was received with status 200 - 你还能看到 CORS 响应标头吗?状态 0 通常表示 CORS 问题
  • cors 响应头确实可用,谢谢

标签: javascript cors fetch


【解决方案1】:

好的,我自己找到了答案,我已经为此苦苦挣扎了几个小时。

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 对我来说确实很奇怪,但是状态码仍然被修改了。

如果有人知道这背后的原因是什么?

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2018-04-26
    • 2017-09-30
    • 2022-12-20
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多