gpt4 book ai didi

html - https ://browserid. org/include.js 在带有 html5 应用缓存 list 的 Chrome 中失败

转载 作者:行者123 更新时间:2023-11-28 03:45:22 24 4
gpt4 key购买 nike

如何从 Chrome 中的应用缓存网络应用程序使用 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 中刷新它时都会提示“确定”。在 Chrome 中,它会在您第一次访问它时提示“OK”,但在您每次刷新它时(即,当从应用程序缓存提供服务时)提示“Oops”。

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

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

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

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

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

最佳答案

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

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

关于html - https ://browserid. org/include.js 在带有 html5 应用缓存 list 的 Chrome 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com