https://browserid.org/include.js терпит неудачу в Chrome с манифестом appcache html5 - PullRequest
2 голосов
/ 18 июля 2011

Как я могу использовать 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.но я надеялся, что у кого-то есть правильное решение.

1 Ответ

0 голосов
/ 23 июля 2011

Я немного поэкспериментировал, и это касается только веб-приложений, которые обслуживаются через http.Поэтому, чтобы избежать этого, просто подайте ваше веб-приложение через https.

это все еще ошибка в Chrome, я думаю, но по крайней мере это обходной путь, поэтому пометьте вопрос как ответивший.

...