【问题标题】:https://browserid.org/include.js fails in Chrome with html5 appcache manifesthttps://browserid.org/include.js 在带有 html5 appcache 清单的 Chrome 中失败
【发布时间】:2011-10-07 16:10:09
【问题描述】:

如何在 Chrome 中使用 appcached webapp 中的 browserid.org?这段代码:

<html manifest="test.appcache"><head> 

<script src="https://browserid.org/include.js"></script> 
<script> 
function test() {
    if(navigator.id){
        alert('OK!');
    } else {
        alert('Oops!');
    }
}
</script> 
</head><body onload="test();">test</body></html> 

结合test.appcache:

CACHE MANIFEST

并使用 .htaccess:

AddType text/cache-manifest .appcache

每次在 Firefox 中刷新时都会提示“OK”。在 Chrome 中,它会在您第一次访问时提示“OK”,但每次刷新时(即从 appcache 提供时)都会提示“糟糕”。

关于它未能包含的文件的一些事实:

  • 它是跨域的
  • 通过 https 提供服务
  • 它有一个“Cache-Control: public, max-age=0”响应头

不过,我不明白为什么这在 FF 中有效但在 Chrome 中失败。我认为这在某种程度上与“HTTP 缓存标头和对通过 TLS 提供的缓存页面的限制被清单覆盖”有关。在http://www.w3.org/TR/html5/offline.html 和/或“通过 SSL,清单中的所有资源都必须遵守同源策略。”在http://appcachefacts.info/ 上,但我不明白具体怎么做。

我在 Ubuntu 上使用 Chromium 12.0.742.112 进行了测试。

我想一种解决方法是创建一个不支持 browserid 的可缓存应用程序,并将 browserid 登录按钮放在不在缓存清单中的 iframe 中,并使用 FALLBACK: 显示灰色的 browserid 登录按钮。但我希望也许有人有合适的解决方案。

【问题讨论】:

    标签: html web-applications google-chrome browserid


    【解决方案1】:

    我做了一些试验,这只影响通过 http 提供服务的网络应用程序。因此,为避免这种情况,只需通过 https 提供您的网络应用程序即可。

    我认为这仍然是 Chrome 中的一个错误,但至少这是一种解决方法,因此将问题标记为已回答。

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2012-08-29
      • 2011-05-08
      • 1970-01-01
      • 2015-08-29
      相关资源
      最近更新 更多