Как я могу использовать browserid.org из кэшированного веб-приложения в Chrome?Этот код:
<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 он будет предупреждать «ОК» при первом посещении, но «Ой» каждый раз, когда вы обновляете его (т. Е. Когда он подается из кэша приложения).
Некоторые факты о файле, к которому он не подходитвключают в себя:
- это перекрестное происхождение
- оно обслуживается через https
- имеет заголовок ответа "Cache-Control: public, max-age = 0"
Тем не менее, я не совсем понимаю, почему это работает в FF, но не работает в Chrome.Я думаю, это как-то связано с тем, что «заголовки кэша HTTP и ограничения на страницы кэширования, обслуживаемые через TLS, переопределяются манифестами».на http://www.w3.org/TR/html5/offline.html и / или «по SSL все ресурсы в манифесте должны соответствовать политике одного источника».на http://appcachefacts.info/, но я точно не понимаю, как.
Я тестировал с Chromium 12.0.742.112 в Ubuntu.
Я думаю, что одним из возможных решений было бы создание кешируемогоприложение без поддержки browserid, и поместите кнопку входа browserid в iframe, которого нет в манифесте кэширования, с FALLBACK: который отображает заштрихованную кнопку входа в систему browserid.но я надеялся, что у кого-то есть правильное решение.