Мои сайты убегают субдомен (yyy.example.com), но я обязан включать файлы CSS от основного домена (example.com). Мы выполняем CMS, который не позволяет мне сделать любой материал серверной стороны во время этапа предварительного просмотра, таким образом, я застреваю, отправляя страницу по https, который включает импорт CSS в http. Все мои пользователи IE получают смешанное предупреждение содержания из-за этого.
Есть ли какая-либо сторона клиента способ для меня предотвратить это кроме поддержания отдельных настроек безопасности для домена на каждой клиентской машине?
Использовать в CSS ссылках протоколоотносительные URL'ы.
Таким образом
<link rel="stylesheet" type="text/css" href="//example.com/style.css">
вместо
<link rel="stylesheet" type="text/css" href="http://example.com/style.css">
Он автоматически выберет протокол родительского запроса, который должен работать нормально и для HTTPS.
.Насколько я знаю, нет способа избежать этого предупреждения. Оно есть, в частности, для этой цели: предупредить вас о том, что даже если вы считаете, что ваша страница зашифрована по SSL, часть ее содержимого не зашифрована. Вам необходимо либо обслуживать оригинальную страницу по HTTP (не рекомендуется), либо обслуживать CSS-файл по HTTPS.
.Когда вы говорите, что не можете делать вещи "на стороне сервера", вы имеете в виду, что не можете прикасаться к вашему CMS, или что у вас нет корневого доступа к вашему HTTP серверу?
Потому что если у вас есть доступ к вашему HTTP серверу, вы можете настроить очень простой обратный прокси (с помощью mod_proxy, если вы используете Apache). Это позволит вам использовать относительные пути в вашем HTML, в то время как HTTP-сервер будет действовать как прокси к любому "удаленному" местоположению. Фактически, эта техника также может быть использована для уменьшения некоторых проблем межсайтового скриптинга.
Фундаментальной конфигурационной директивой для установки обратного прокси в mod_proxy является ProxyPass. Обычно вы используете ее следующим образом:
ProxyPass /css/ http://example.com/css_dir/
В этом случае браузер будет запрашивать https://yyy.example.com/css/main.css
, но сервер будет обслуживать его, действуя в качестве прокси-сервера для http://example.com/css_dir/main.css
. Он не будет вызывать предупреждение браузера и прекрасно работает с SSL.