Frage

Wie kann ich überzeugen Firefox (3.0.1, wenn es darauf ankommt) zu senden Sie eine If-Modified-since-header in eine HTTPS-Anfrage?Es sendet den header, wenn die Anforderung verwendet plain-HTTP-und mein server pflichtbewusst ehrt es.Aber wenn ich den Antrag für die gleiche Ressource von demselben server mit HTTPS statt (D. H., Sie verändern einfach das http:// in der URL auf https://) dann Firefox nicht senden Sie eine If-Modified-since-header an alle.Ist dieses Verhalten gerechtfertigt durch die SSL-spec-oder etwas?

Hier sind einige Beispiel-HTTP-und HTTPS-request/response-Paare, zog mit dem Live HTTP Headers Firefox-Erweiterung, mit einigen unterschieden in bold:

HTTP-Anfrage/Antwort:

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-Anforderung/Antwort:

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:Einstellung browser.cache.disk_cache_ssl zu wahren, war der trick (das ist seltsam, weil, wie Nickolay Punkte aus, da gibt es noch den Speicher-cache).Hinzufügen einer "Cache-control:public" - header an die response auch gearbeitet.Vielen Dank!

War es hilfreich?

Lösung

HTTPS-Anforderungen werden nicht zwischengespeichert, so senden Sie eine If-Modified-since " - macht keinen Sinn.Die nicht-caching ist eine Sicherheitsmaßnahme.

Die nicht-caching auf der Festplatte ist eine security pre-Vorsicht, aber es scheint, dass es in der Tat wirkt sich auf die If-Modified-Since Verhalten (mit einem Blick über den code).

Versuchen Sie die Firefox-Einstellungen (in about:config) browser.- cache.disk_cache_ssl zu true.Ob das hilft, versuchen senden Cache-Control:public - header in der Antwort.


UPDATE: Firefox-Verhalten wurde geändert für Gecko 2.0 (Firefox 4) -- HTTPS-Inhalt wird nun zwischengespeichert.

Andere Tipps

HTTPS-Anforderungen werden nicht zwischengespeichert, so senden Sie eine If-Modified-Since macht keinen Sinn.Die nicht-caching ist eine Sicherheitsmaßnahme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top