缓存控制指令(仅当缓存)被开发工具更改了吗?

Cache-control directive (only-if-cached) changed by dev-tools?

我们正在开发一个渐进式 Web 应用程序,服务工作人员为此拦截网络流量(通过 fetch 事件处理程序)。我们注意到,有时某个请求在这里会失败,因为 Request.cacheonly-if-cachedRequest.modeno-cors, but not 同源.

所以它类似于this problem

然后我注意到,只有在 Chrome (v 65) DevTools 未打开时才会发生这种情况。有没有人注意到同样的现象,有没有人知道为什么会这样?

部分请求:

bodyUsed: false,
cache: "only-if-cached",
credentials: "include",
destination: "unknown",
headers: Headers {},
integrity: "",
method: "GET",
mode: "no-cors",
redirect: "follow",
referrer: "",
referrerPolicy: "no-referrer-when-downgrade",
url: "https://example.com/path/to/app-name/#!

我们是这样处理这个问题的,但恐怕这样不合适。

serviceWorkerGlobal.addEventListener('fetch', function(event)
{
    if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') {
        var oStrangeRequest = event.request.clone();
        console.log('Fetch. Request cache has only-if-cached, but not same-origin.',
            oStrangeRequest.cache, oStrangeRequest.mode,
            'request redirect:',
            oStrangeRequest.redirect, oStrangeRequest.url, oStrangeRequest);
        return;
    }
    // ...
});

这是一个错误。您可以在此处查看修复进度:https://bugs.chromium.org/p/chromium/issues/detail?id=823392