Ссылка на файлы CSS через домены без предупреждения смешанного содержимого в IE? - PullRequest
7 голосов
/ 24 декабря 2009

Мои сайты запускаются с субдомена (yyy.example.com), но мне необходимо включить CSS-файлы из основного домена (example.com). Мы запускаем CMS, которая не позволяет мне выполнять какие-либо действия на стороне сервера на этапе предварительного просмотра, поэтому я застрял, отправляя страницу через https, которая включает импорт CSS в http. Из-за этого все мои пользователи IE получают предупреждение о смешанном контенте.

Есть ли способ предотвратить это на стороне клиента, кроме поддержки отдельных настроек безопасности для домена на каждом клиентском компьютере?

Ответы [ 4 ]

9 голосов
/ 26 декабря 2009

Использовать относящиеся к протоколу URL в ссылках CSS.

Таким образом, так

<link rel="stylesheet" type="text/css" href="//example.com/style.css">

вместо

<link rel="stylesheet" type="text/css" href="http://example.com/style.css">

Он автоматически выберет протокол родительского запроса, который также должен работать для HTTPS.

3 голосов
/ 24 декабря 2009

Насколько я знаю, избежать этого предупреждения невозможно. Он специально предназначен для этой цели: предупреждает вас о том, что даже если вы считаете, что ваша страница зашифрована с помощью SSL, часть ее содержимого - нет. Вам нужно будет либо обслуживать исходную страницу по HTTP (не рекомендуется), либо обслуживать файл CSS по HTTPS.

1 голос
/ 06 января 2011

Есть одно условие ... IE загружает ресурсы дважды, как кажется.

http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema-double-download/

1 голос
/ 24 декабря 2009

Когда вы говорите, что не можете выполнять "серверные" действия, вы имеете в виду, что не можете коснуться своей 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...