Кэширование ресурса по протоколам HTTP и HTTPS


Есть ли способ указать, что ресурс должен кэшироваться при доступе как по HTTP, так и по HTTPS? У нас есть много статического контента, который первоначально подается по протоколу HTTP, а затем повторно подается по протоколу SSL, когда пользователь пытается зарегистрироваться или войти в систему, и было бы неплохо кэшировать его.

Author: Kevin Burke, 2012-03-19

2 answers

Нет, браузеры будут рассматривать URL-адреса HTTP и HTTPS как совершенно разные, даже если единственным фактическим отличием является наличие s.

Если бы они этого не сделали, это создало бы серьезную брешь в системе безопасности. Подумайте, что произойдет, если, скажем, злоумышленнику удастся взломать файл JS, загруженный по небезопасному HTTP, и браузер позже повторно запустит тот же код JS из своего кэша на защищенной странице.

Единственный способ повторно использовать одни и те же статические ресурсы как в безопасных, так и в небезопасных страницы должны загружаться с одних и тех же URL-адресов. Здесь у вас есть в основном два варианта:

  • Используйте HTTPS для своих статических ресурсов, даже если главная страница загружается по HTTP. Это будет работать и безопасно, но использование HTTPS потребует небольших затрат на процессор и не позволит общим прокси-серверам кэшировать ресурсы. Однако браузер пользователя все равно будет кэшировать их, и по-прежнему можно использовать обратный прокси или CDN для обслуживания ресурсов, пока они могут действовать как доверенные конечные точки SSL.

  • Используйте HTTP для своих статических ресурсов, даже если главная страница загружается по протоколу HTTPS. Это может также работать в некоторых браузерах, но это небезопасно . Даже браузеры, в которых это работает, обычно предупреждают пользователя о наличии небезопасного контента или просто рассматривают всю страницу как небезопасную. Например, IE8 отобразит предупреждение "смешанный контент", в то время как IE9 просто не будет загружать небезопасные ресурсы (за исключением изображений).

Конечно, у вас также есть третий вариант: просто используйте HTTPS для всех ваших страниц. Это может быть более практично, чем вы думаете, особенно если значительная часть вашего трафика уже использует HTTPS.

 5
Author: Ilmari Karonen, 2012-03-19 22:53:14

Я не нашел ничего, что конкретно указывало бы, как браузеры должны обрабатывать совместное использование кэшированного содержимого https и http, и я также нашел противоречивую информацию в Интернете.

Например: Я очистил свой кэш в Firefox, посетил http://www.google.com , просмотрел мой дисковый кэш (введите about:cache в строке URL-адреса), а затем посетил https://www.google.com .

Несмотря на то, что и http, и https кэшировали содержимое, сайт https не извлекал кэшированные ресурсы http. В любом случае, вот несколько статей, которые могут быть полезны:

Надеюсь, это поможет!

 0
Author: InChargeOfIT, 2012-03-19 20:18:36