2008-08-19 7 views
13

¿Cómo puedo convencer a Firefox (3.0.1, si es importante) para que envíe un encabezado If-Modified-Since en una solicitud HTTPS? Envía el encabezado si la solicitud usa HTTP simple y mi servidor lo respeta diligentemente. Pero cuando solicito el mismo recurso del mismo servidor usando HTTPS (es decir, simplemente cambiando el http: // en la URL a https: //), Firefox no envía ningún encabezado If-Modified-Since. ¿Este comportamiento es obligatorio por la especificación SSL o algo así?Convenza a Firefox para que envíe un encabezado If-Modified-Since sobre HTTPS

Éstos son algunos ejemplos de HTTP y HTTPS pares petición/respuesta, tiró utilizando la extensión vivo encabezados HTTP Firefox, con algunas diferencias en negrita:

petición/respuesta 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 

solicitud HTTPS/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 a cierto hizo el truco (lo cual es extraño porque, como señala Nickolay, aún existe la memoria caché). Agregar un encabezado "Cache-control: public" a la respuesta también funcionó. ¡Gracias!

Respuesta

14

Las solicitudes HTTPS no se almacenan en caché, por lo que enviar un If-Modified-Since no tiene ningún sentido. El no almacenamiento en caché es una medida de seguridad.

El almacenamiento en caché no en el disco es un valor pre-precaución, pero parece que de hecho afecta a la If-Modified-Since comportamiento (mirando por encima del código). browser.cache.disk_cache_ssl a cierto:

establecer la preferencia Firefox (config en aproximadamente) intento. Si eso ayuda, intente enviar Cache-Control: public encabezado en su respuesta.


ACTUALIZACIÓN: Comportamiento Firefox was changed de Gecko 2.0 (Firefox 4) - HTTPS contenido está almacenado en caché.

+0

Parcialmente cierto, pero en las versiones actuales de FF, HTTPS Respuestas * son * SI caché cache-control: se envía público. – EricLaw

+0

Sí, es por eso que sugerí verificar primero si mi lectura del código es correcta, volteando el pref y la prueba, y luego haciendo que el navegador guarde en caché las páginas servidas por HTTP enviando el encabezado. – Nickolay

2

Las solicitudes HTTPS no se almacenan en caché, por lo que enviar un If-Modified-Since no tiene ningún sentido. El no almacenamiento en caché es una medida de seguridad.

+0

Se puede tener una caché si el servidor envía Cache-Control:, max-age = XXX pública – hughw

Cuestiones relacionadas