SSL и смешанный контент из-за фоновых изображений CSS
У меня есть веб-страница, содержащая форму ввода. HTTPS включен с помощью перенаправления Apache для всех запросов, соответствующих этой странице. К сожалению, поскольку CSS рисует внешние изображения, используя "background-image: url (/images/...)", браузер генерирует предупреждающее сообщение о том, что страница содержит смешанный контент.
Какой лучший способ решить эту проблему?
Ответы
Ответ 1
Обновление 2014.12.17:
Теперь, когда SSL поощряется для всех и не имеет производительности проблемы, этот метод теперь является анти-шаблоном. Если ресурс, который вам нужен, доступен в SSL, всегда используйте ресурс https://
.
Разрешающий фрагмент запроса по HTTP открывает дверь для атак как недавняя атака Github Man-on-the-side. Его всегда безопасен для запрашивать активы HTTPS, даже если ваш сайт находится на HTTP, однако обратный не соответствует действительности.
Дополнительные указания и подробности в Руководство Eric Mills для CDN и HTTPS.
Источник: Paul Irish - относительный URL-адрес протокола
Вот очень популярное решение:
Вот этот маленький трюк, с которым вы можете избавиться, это избавит вас от головной боли:
В HTML
<img src="//domain.com/img/logo.png">
В CSS
div{background: url(//path/to/image.png);}
Ответ 2
Вы также должны включить HTTPS для своих статических ресурсов, а затем убедитесь, что <link>
явно ссылается на URL-адрес HTTPS для ресурса CSS (чьи относительные URL-адреса будут интерпретироваться относительно базы HTTPS файла CSS).
Ответ 3
Вы должны использовать полный URL для своего изображения:
https://your.domain.com/img/image.png`
или
https://your.domain.com/route/to/img/image.png
Это решило мою проблему некоторое время назад.