【发布时间】: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