【问题标题】:Prevent blocking of redirect from https to http in service worker防止在服务人员中阻止从 https 到 http 的重定向
【发布时间】:2016-01-07 21:06:10
【问题描述】:

我一直在努力实现一个服务工作者来为我们的网站添加一些缓存优势,除了网站上的一个特定页面之外,一切都进展顺利。

此页面链接为https://domain/path,但服务器端重定向看起来将其重定向到http://domain/path/,此时服务工作者正在阻止请求。单击链接时,页面会显示This webpage is not available 错误,并且控制台会显示以下内容:

Mixed Content: The page at 'https://domain.com/service-worker.js' was loaded over HTTPS, but requested an insecure resource 'http://domain.com/path/'. This request has been blocked; the content must be served over HTTPS.

理想情况下,我们将寻求确保重定向保持在 https 上,但是当这个问题得到解决时,是否有办法在 service worker 中解决这个问题?

【问题讨论】:

  • Service Worker 究竟是如何阻止您的请求的?您的错误消息表明对service-worker.js 的请求没有按原样加载到http 页面上。
  • 如果没有 service worker,浏览器只会跟随重定向。当服务工作者正在处理获取时,重定向被阻止
  • https://domain.com/service-worker.js之外的其他文件是否会发生错误?

标签: javascript service-worker


【解决方案1】:

在 Chrome 中,当前的实现阻止 SW 混合内容。 Chrome 解释原因在:https://code.google.com/p/chromium/issues/detail?id=448672#c4 说明:

所以每个使用 fetch() 的请求都必须被阻塞,因为 fetch 不是一个可选阻塞的请求上下文。

但是,我向规范委员会提出了这个问题,因为它似乎违反了当前的规范。您可以关注讨论并阅读背后的理由:https://github.com/slightlyoff/ServiceWorker/issues/813

【讨论】:

    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 2018-10-12
    • 2018-02-03
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多