Convencer a Firefox para enviar un If-Modified-since encabezado a través de HTTPS
Pregunta
¿Cómo puedo convencer a Firefox (3.0.1, si lo que importa) para enviar un If-Modified-since encabezado en una solicitud HTTPS?Envía el encabezado si la solicitud utiliza HTTP plano y a mi servidor, de forma puntillosa, honra a él.Pero cuando me piden el mismo recurso desde el mismo servidor con el protocolo HTTPS en lugar (es decir, simplemente cambiando el http:// en la dirección URL https://), a continuación, Firefox no enviar un If-Modified-since encabezado en todos.Es este comportamiento, por mandato de la SSL spec o algo?
Aquí hay algunos ejemplos de HTTP y HTTPS de solicitud/respuesta de pares, sacó usando el Live HTTP Encabezados de extensión de Firefox, con algunas diferencias en negrita:
Solicitud y respuesta de 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 solicitud/respuesta:
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
ACTUALIZACIÓN:Configuración browser.cache.disk_cache_ssl
true hizo el truco (lo cual es extraño porque, como Nickolay puntos, hay todavía la memoria caché).La adición de un "Cache-control:público" encabezado de la respuesta también trabajó.Gracias!
Solución
Las solicitudes HTTPS no se almacenan en caché para el envío de un If-Modified-since no tiene ningún sentido.El no almacenamiento en caché es una precaución de seguridad.
El no caché en el disco es una medida de seguridad pre-precaución, pero parece que, de hecho, afecta a la If-Modified-Since comportamiento (de refilón sobre el código).
Prueba a configurar el Firefox preferencia (en about:config) el navegador.la memoria caché.disk_cache_ssl a cierto.Si que ayuda, trate de enviar Cache-Control:público encabezado en su respuesta.
ACTUALIZACIÓN: Firefox comportamiento se ha cambiado por Gecko 2.0 (Firefox 4) -- HTTPS ahora, el contenido almacenado en caché.
Otros consejos
Las solicitudes HTTPS no se almacenan en caché para el envío de un If-Modified-Since no tiene ningún sentido.El no almacenamiento en caché es una precaución de seguridad.