HTTPS リクエストで If-Modified-Since ヘッダーを送信するように Firefox (重要な場合は 3.0.1) を説得するにはどうすればよいですか? リクエストがプレーンHTTPを使用し、サーバーがそれを忠実に尊重する場合、ヘッダーを送信します。しかし、代わりに HTTPS を使用して同じサーバーから同じリソースを要求すると (つまり、単に URL の http:// を https:// に変更すると)、Firefox は If-Modified-Since ヘッダーをまったく送信しません。この動作は SSL 仕様または何かによって義務付けられていますか?
以下は、ライブ HTTP ヘッダー Firefox 拡張機能を使用してプルされた HTTP および HTTPS 要求/応答のペアの例です。太字でいくつかの違いがあります。
HTTP リクエスト/レスポンス:
http://myserver.com:30000/scripts/site.js GET /scripts/site.js HTTP/1.1 ホスト: myserver.com:30000 ユーザーエージェント: Mozilla/5.0 (...) Gecko/2008070206 Firefox/3.0.1 受け入れる: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 キープアライブ: 300 接続: キープアライブ If-Modified-Since: 2008 年 8 月 19 日(火)15:57:30 GMT If-None-Match: "a0501d1-300a-454d22526ae80"-gzip キャッシュ制御: max-age=0 HTTP/1.x 304 は変更されていません 日付: 2008 年 8 月 19 日 (火) 15:59:23 GMT サーバー: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8 接続: キープアライブ キープアライブ: タイムアウト = 5、最大 = 99 Etag: "a0501d1-300a-454d22526ae80"-gzip
HTTPS リクエスト/レスポンス:
https://myserver.com:30001/scripts/site.js GET /scripts/site.js HTTP/1.1 ホスト: myserver.com:30001 ユーザーエージェント: Mozilla/5.0 (...) Gecko/2008070206 Firefox/3.0.1 受け入れる: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 キープアライブ: 300 接続: キープアライブ HTTP/1.x 200 OK 日付: 2008 年 8 月 19 日 (火) 16:00:14 GMT サーバー: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8 最終更新日: 2008 年 8 月 19 日 (火) 15:57:30 GMT Etag: "a0501d1-300a-454d22526ae80"-gzip Accept-Ranges: バイト コンテンツ エンコーディング: gzip コンテンツの長さ: 3766 キープアライブ: タイムアウト = 5、最大 = 100 接続: キープアライブ コンテンツタイプ: text/javascript
更新: browser.cache.disk_cache_ssl
true に設定するとうまくいきました (Nickolay が指摘しているように、メモリ キャッシュがまだ残っているため、これは奇妙です)。応答に「Cache-control: public」ヘッダーを追加することもできました。ありがとう!