Firefox とアプリケーション キャッシュでいくつかのクロスオリジン リクエストを実行する際に問題が発生しています。
XHR リクエストのエラー ハンドラが呼び出され、XHR リクエストのステータスは 0 です。
firebug でネットワーク ログを見ると、問題ないように見える OPTIONS リクエストが表示されます。
OPTIONS /foo.bar HTTP/1.1
Host: localhost:1337
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: http://localhost:8080
Access-Control-Request-Method: GET
Access-Control-Request-Headers: content-type
Connection: keep-alive
サーバーが OK に見える何かを応答する:
HTTP/1.1 200 OK
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Methods: GET, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: content-type
Date: Thu, 14 Mar 2013 17:55:22 GMT
Connection: keep-alive
Transfer-Encoding: chunked
次に、GET 自体が応答を取得しません。
GET /foo.bar HTTP/1.1
Host: localhost:1337
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: http://localhost:8080
Connection: keep-alive
(サーバーログを見ると、サーバーはリクエストを受け取りません)
私は html5 アプリケーション キャッシュ メカニズムを使用しています。これが私のマニフェストのネットワーク セクションです。
NETWORK:
default.php
resource.php
http://localhost:1337/
これが私が試したものです:
- マニフェスト ファイル内の置き換え: 動作
http://localhost:1337/
し*
ますが、私はそれが好きではありません。不足している CACHE エントリの検出に関しては、非明示的なネットワーク リクエストをブロックすると便利であることがわかりました。 GET
method を method に置き換えますPOST
: 動作しますが、意味的に間違っているので好きではありません (データを投稿するのではなく、リソースを取得しようとしています)。GET
メソッドをカスタムだが意味論的に正しいメソッドに置き換えREAD
ます。機能しませんが、楽しかったです。
私がやろうとしていることは、W3C の仕様のネットワーク モデルへの変更のステップ 3 に該当し、そのまま機能するはずであると理解しています。
したがって、このすべての後、私の質問は次のとおりです。
- 私は何を間違っていますか?
- これは firefox のバグですか? (言い忘れていましたが、私のサイトは Chrome と IE10 (はい、IE10、Microsoft Internet Explorer バージョン 10 のように) で魅力的に動作します)
- Firefox で動作させるためにちょっとした工夫が必要だとしたら、どれをやればいいですか? 私が見つけた2つの悪い解決策よりも良い解決策はありますか?