Convaincre Firefox pour envoyer un if-Modified-since-tête sur HTTPS
Question
Comment puis-je convaincre Firefox (3.0.1, si c'est important) pour envoyer un if-Modified-since-tête dans une requête HTTPS?Il envoie l'en-tête si la requête utilise la plaine HTTP et mon serveur scrupuleusement les honneurs qu'il.Mais quand je demande la même ressource à partir du même serveur à l'aide de HTTPS à la place (c'est à dire, simplement en changeant l'adresse http:// dans l'URL: https://) alors, Firefox ne prend pas en envoyer un Si-Modified-since-tête à tous.Est ce comportement mandaté par la SSL du spec ou quelque chose?
Voici quelques exemples de HTTP et de HTTPS paires de demande/réponse, tiré à l'aide de la Live HTTP Headers extension de Firefox, avec quelques différences en gras:
Requête HTTP/réponse:
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 Si-Modified-Since:Mardi 19 Août 2008 à 15:57:30 GMT Si-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 demande/réponse:
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
Mise à JOUR:Réglage browser.cache.disk_cache_ssl
à vrai a fait le tour (ce qui est étrange parce que, comme Nickolay le souligne, il y a encore de la mémoire cache).L'ajout d'un "Cache-control:public" en-tête de la réponse aussi travaillé.Merci!
La solution
Les requêtes HTTPS ne sont pas mises en cache afin d'envoi d'un Si-Modified-since n'a pas de sens.Le pas de mise en cache est une précaution de sécurité.
Le en cache pas sur le disque est une sécurité mise en garde, mais il semble que cela affecte en effet la Si-Modified-Since comportement (jetant un coup d'oeil sur le code).
Essayez de définir le Firefox de préférence (dans about:config) le navigateur.le cache.disk_cache_ssl pour vrai.Si cela peut vous aider, essayez d'envoi Cache-Control:public l'en-tête dans votre réponse.
Mise à JOUR: Firefox comportement a été changé pour Gecko 2.0 (Firefox 4) -- le contenu HTTPS est maintenant mis en cache.
Autres conseils
Les requêtes HTTPS ne sont pas mises en cache afin d'envoi d'un Si-Modified-Since n'a pas de sens.Le pas de mise en cache est une précaution de sécurité.