Pergunta

Como posso convencer o Firefox (3.0.1, se for importante) a enviar um cabeçalho If-Modified-Since em uma solicitação HTTPS?Ele envia o cabeçalho se a solicitação usar HTTP simples e meu servidor o honrar obedientemente.Mas quando solicito o mesmo recurso do mesmo servidor usando HTTPS (ou seja, simplesmente alterando http:// na URL para https://), o Firefox não envia nenhum cabeçalho If-Modified-Since.Esse comportamento é exigido pela especificação SSL ou algo assim?

Aqui estão alguns exemplos de pares de solicitação/resposta HTTP e HTTPS, obtidos usando a extensão Live HTTP Headers do Firefox, com algumas diferenças em negrito:

Solicitação/resposta 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
Se modificado desde:Ter, 19 de agosto de 2008 15:57:30 GMT If-None-Match:"A0501D1-300A-454D22526AE80" -GZIP CACHE-CONTROL:idade máxima = 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

Solicitação/resposta HTTPS:

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

ATUALIZAR:Contexto browser.cache.disk_cache_ssl to true funcionou (o que é estranho porque, como Nickolay aponta, ainda há o cache de memória).Adicionando um "controle de cache:public" para a resposta também funcionou.Obrigado!

Foi útil?

Solução

As solicitações HTTPS não são armazenadas em cache, portanto, enviar um If-Modified-Since não faz sentido.O não armazenamento em cache é uma precaução de segurança.

O não cache no disco é uma precaução de segurança, mas parece que de fato afeta o Se-Modificado-Desde comportamento (olhando o código).

Tente definir a preferência do Firefox (em about:config) navegador.cache.disk_cache_ssl para verdadeiro.Se isso ajudar, tente enviar Controle de cache:público cabeçalho em sua resposta.


ATUALIZAR: Comportamento do Firefox foi alterado para Gecko 2.0 (Firefox 4) – o conteúdo HTTPS agora está armazenado em cache.

Outras dicas

As solicitações HTTPS não são armazenadas em cache, portanto, enviar um Se-Modificado-Desde não faz nenhum sentido.O não armazenamento em cache é uma precaução de segurança.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top