2008-08-19 7 views
13

HTTPS要求でIf-Modified-Sinceヘッダーを送信するにはどうすればFirefox(3.0.1、重要か)を説得できますか?リクエストがプレーンなHTTPを使用し、私のサーバが忠実にそれを尊重している場合、ヘッダを送信します。しかし、HTTPSを使用して同じサーバーから同じリソースを要求すると(つまり、URLのhttp://をhttps://に変更するだけで)、FirefoxはIf-Modified-Sinceヘッダーをまったく送信しません。この動作はSSL仕様などによって義務付けられていますか?ここでFirefoxがHTTPS経由でIf-Modified-Sinceヘッダーを送信することを納得させる

いくつかの例のHTTPおよびHTTPSリクエスト/レスポンスのペアは、太字でいくつかの違いで、ライブHTTPヘッダーFirefoxの拡張機能を使用して引かれています。

HTTPリクエスト/レスポンス:

http://myserver.com:30000/scripts/site.js 

GET /scripts/site.js HTTP/1.1 
Host: myserver.com:30000 
User-Agent: Mozilla/5.0 (...) Gecko/2008070206 Firefox/3.0.1 
Accept: 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 
Keep-Alive: 300 
Connection: keep-alive 
If-Modified-Since: Tue, 19 Aug 2008 15:57:30 GMT 
If-None-Match: "a0501d1-300a-454d22526ae80"-gzip 
Cache-Control: max-age=0 

HTTP/1.x 304 Not Modified 
Date: Tue, 19 Aug 2008 15:59:23 GMT 
Server: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8 
Connection: Keep-Alive 
Keep-Alive: timeout=5, max=99 
Etag: "a0501d1-300a-454d22526ae80"-gzip 

HTTPSリクエストを/応答:

https://myserver.com:30001/scripts/site.js 

GET /scripts/site.js HTTP/1.1 
Host: myserver.com:30001 
User-Agent: Mozilla/5.0 (...) Gecko/2008070206 Firefox/3.0.1 
Accept: 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 
Keep-Alive: 300 
Connection: keep-alive 

HTTP/1.x 200 OK 
Date: Tue, 19 Aug 2008 16:00:14 GMT 
Server: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8 
Last-Modified: Tue, 19 Aug 2008 15:57:30 GMT 
Etag: "a0501d1-300a-454d22526ae80"-gzip 
Accept-Ranges: bytes 
Content-Encoding: gzip 
Content-Length: 3766 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/javascript

UPDATE:trueにbrowser.cache.disk_cache_sslを設定する(Nickolayが指摘するように、メモリキャッシュがまだあります、ので、奇数である)トリックを行いました。応答に「Cache-control:public」ヘッダーを追加することもできました。ありがとう!

答えて

14

HTTPS要求はキャッシュされないため、If-Modified-Sinceの送信は意味をなさない。キャッシュしないことは、セキュリティ上の予防措置です。

ディスクにをキャッシュしていないが、セキュリティの事前注意ですが、それが実際に変更された場合は、-のでに影響行動(コードの上にかすめる)ようです。

は(約中:設定)Firefoxのプリファレンスを設定してみてくださいbrowser.cache.disk_cache_sslに忠実。それが役に立つ場合は、Cache-Control:publicヘッダーを送信してみてください。


UPDATE:ヤモリ2.0の Firefoxの動作was changed(Firefoxの4) - HTTPSコンテンツは現在キャッシュされています。

+0

ほとんどの場合、現行バージョンのFFではHTTPSレスポンス*がキャッシュされます* IF cache-control:publicが送信されます。 – EricLaw

+0

ええ、私は最初にコードの読み方が正しいかどうかを確認し、そのプレフィックスを裏返してテストしてから、ヘッダーを送信してブラウザにHTTPs提供のページをキャッシュさせることを提案しました。 – Nickolay

2

HTTPS要求がキャッシュされていないので、If-Modified-Sinceの送信は意味をなさない。キャッシュしないことは、セキュリティ上の予防措置です。

+0

サーバーがCache-Controlを送信するとキャッシュされることがあります。public、max-age = XXX – hughw

関連する問題