Wie kann ich Firefox (3.0.1, wenn es darauf ankommt) überzeugen, einen If-Modified-Since-Header in einer HTTPS-Anfrage zu senden? Er sendet den Header, wenn die Anfrage plain HTTP verwendet und mein Server pflichtgemäß es ehrt. Aber wenn ich die gleiche Ressource von demselben Server mit HTTPS anfordere (d. H., Einfach die http: // in der URL zu https: // ändern), dann sendet Firefox keinen If-Modified-Since-Header. Ist dieses Verhalten durch die SSL-Spezifikation oder etwas anderes vorgeschrieben?Firefox überreden, einen If-Modified-Since-Header über HTTPS zu senden
Hier sind einige Beispiele HTTP und HTTPS-Anforderung/Antwort-Paare, zog das Live HTTP Headers Firefox-Erweiterung verwenden, mit einigen Unterschieden in fett:
HTTP Request/Response:
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-Anfrage/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: browser.cache.disk_cache_ssl
auf true hat den Trick (was merkwürdig ist, weil, wie Nickolay weist darauf hin, gibt es noch die Speicher-Cache). Das Hinzufügen eines Headers "Cache-control: public" zur Antwort funktionierte ebenfalls. Vielen Dank!
Meistens stimmt, aber in den aktuellen Versionen von FF, HTTPS Antworten * sind * zwischengespeichert IF Cache-Control: public gesendet wird. – EricLaw
Ja, weshalb ich vorgeschlagen habe, zuerst zu überprüfen, ob mein Code richtig gelesen wurde, indem ich Pref und Testing umblättere und den Browser dann die HTTPs-servierten Seiten zwischenspeichern lasse, indem ich den Header sende. – Nickolay