Убедите Firefox отправить заголовок If-Modified-Since через HTTPS

StackOverflow https://stackoverflow.com/questions/16483

  •  08-06-2019
  •  | 
  •  

Вопрос

Как я могу убедить Firefox (3.0.1, если это имеет значение) отправить заголовок If-Modified-Since в HTTPS-запросе?Он отправляет заголовок, если запрос использует простой HTTP, и мой сервер послушно его обрабатывает.Но когда я запрашиваю тот же ресурс с того же сервера, используя вместо этого HTTPS (т. е. просто меняю http:// в URL-адресе на https://), Firefox вообще не отправляет заголовок If-Modified-Since.Такое поведение предписано спецификацией SSL или чем-то еще?

Вот несколько примеров пар запрос/ответ HTTP и HTTPS, полученных с помощью расширения Firefox Live HTTP Headers, с некоторыми различиями, выделенными жирным шрифтом:

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
Если-Изменено-С тех пор:Вт, 19 августа 2008 г. 15:57:30 по Гринвичу IF-None Match:"A0501D1-300A-454D22526AE80" -GZIP CACHE-CACHE:максимальный возраст=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-запрос/ответ:

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

ОБНОВЛЯТЬ:Параметр browser.cache.disk_cache_ssl to true сделал свое дело (что странно, потому что, как отмечает Николай, кэш памяти все еще существует).Добавление «Кэш-контроля:public» заголовок ответа также работал.Спасибо!

Это было полезно?

Решение

HTTPS-запросы не кэшируются, поэтому отправка If-Modified-Since не имеет никакого смысла.Отказ от кэширования является мерой безопасности.

Не кэширование на диске это мера предосторожности, но похоже, что она действительно влияет на Если-Изменено-С тех пор поведение (просматривая код).

Попробуйте установить настройки Firefox (в about:config). браузер.cache.disk_cache_ssl к истинный.Если это поможет, попробуйте отправить Управление кэшем:общественный заголовок в вашем ответе.


ОБНОВЛЯТЬ: Поведение Firefox был изменен для Gecko 2.0 (Firefox 4) — содержимое HTTPS теперь кэшируется.

Другие советы

HTTPS-запросы не кэшируются, поэтому отправка Если-Изменено-С тех пор не имеет никакого смысла.Отказ от кэширования является мерой безопасности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top