2

Chromeのappcachedウェブアプリから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から提供されたときに)「Oops」と警告します。

含めることができないファイルに関するいくつかの事実:

  • クロスオリジンです
  • https経由で提供されます
  • 「Cache-Control:public、max-age=0」応答ヘッダーがあります

それでも、これがFFで機能するのに、Chromeでは失敗する理由を正確に理解していません。これは、「HTTPキャッシュヘッダーとTLSを介して提供されるキャッシュページの制限がマニフェストによって上書きされる」ことに何らかの形で関連していると思います。http://www.w3.org/TR/html5/offline.htmlおよび/または「SSLを介して、マニフェスト内のすべてのリソースは同一生成元ポリシーを尊重する必要があります。」http://appcachefacts.info/にありますが、正確な方法がわかりません。

UbuntuでChromium12.0.742.112を使用してテストしました。

回避策の1つは、browseridをサポートせずにキャッシュ可能なアプリを作成し、browseridログインボタンをキャッシュマニフェストにないiframeに配置し、FALLBACK:を使用してbrowseridログインボタンをグレー表示することです。しかし、私は誰かが適切な解決策を持っていることを望んでいました。

4

1 に答える 1

0

少し実験しましたが、これは http 経由で提供される Web アプリにのみ影響します。したがって、それを避けるには、単に https 経由で Web アプリを提供します。

それはまだChromeのバグだと思いますが、少なくともこれは回避策であるため、質問を回答済みとしてマークします。

于 2011-07-23T03:17:46.233 に答える