javascript - Service Worker 图像状态码

标签 javascript service-worker

我尝试使用服务工作人员检测图像的错误 404。 有没有办法获取图像提取的状态代码?

self.addEventListener('fetch', function(event) {

    console.log('Handling fetch event for %s', event.request.url);

    event.respondWith(
        fetch(event.request).then(function(response) {

            if (response.status == 200) {
                return response;                    
            }
            else {
                /* return some default image */
            }

        })        
    );

});

此代码适用于 html 文件,但是当它获取图像时,状态代码始终为 0。有没有办法获取图像的状态代码?为了简化我的示例,我删除了缓存和其他所有内容。

这是我尝试加载的示例页面:

<body>
    <!-- This image is working -->
    <img src="http://www.google.ca/images/srpr/logo11w.png">
    <!-- This image returns 404 -->
    <img src="http://www.google.ca/images/srpr/00000.png">
</body>

所以 html 页面本身的状态是 200,但是两个图像都返回 0 的状态。

最佳答案

您将返回一个 opaque filtered response ,当您的请求不使用 CORS 时,这是预期的。在这种情况下,0status 是有意模糊的——如果使用了真实的状态代码,那么如果没有 CORS 则无法获得的信息将会泄露。

fetch 规范中有一些背景信息 issue .

关于javascript - Service Worker 图像状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358847/

相关文章:

javascript - GLatLngBounds - 错误的中心和缩放级别

javascript - 改变边框颜色Javascript

javascript - Jquery .each() 不添加总和

javascript - 使用 service worker 的带有通知的计时器

javascript - 在 fetchEvent 中返回请求作为响应

javascript - 在这个类下用jquery改变input的值

javascript - 预检响应中的 Access-Control-Allow-Headers 不允许请求 header 字段 Access-Control-Request-Methods

javascript - 在服务 worker 中缓存 webpack 哈希 url

vue.js - Vue Workbox Webpack "cannot use import statement outside a module"

javascript - Google 云消息传递 (GCM) 无法与 Firefox 配合使用