Смена http:// на // в src атрибуте <script>: правила и исключения
Быстрый ответ
Да. Если заменить http://
на //
в атрибуте src
тега <script>
, то протокол текущего документа (HTTP или HTTPS) будет использоваться автоматически. Эту технику, известную как схема относительно используемого протокола, можно применять для избегания предупреждений о смешанном содержании. Она позволяет браузеру самому определить, какой протокол использовать.
Пример:
<script src="//example.com/script.js">
// Браузер сам решает, использовать HTTP или HTTPS
</script>
Этот метод улучшает безопасность взаимодействия и обеспечивает лучшую совместимость. Пусть выбор протокола будет на стороне браузера.
Совместимость с браузерами и возможные проблемы
Схемы относительные протоколу обеспечивают гибкость, но всегда проверяйте их работу в различных браузерах. Совместимость метода хорошо изучена для таких браузеров, как Firefox, Safari, IE6, IE7 и Opera.
- Простота использования: Метод одинаково хорошо работает для сайтов на HTTP и HTTPS.
- Предупреждения о смешанном содержании: Этот метод поможет избавиться от проблем с защитой данных, в особенности в браузерах, таких как IE8.
- Особенности старых версий: Учтите, что старые версии IE могут загружать ресурсы по относительным URL дважды.
Преимущества схем, относительных протоколу
Применение схем, относительных протоколу, для тегов <script>
имеет свои особенности:
- Дублирование загрузки в IE: Старые версии IE могут повторно загружать скрипты.
- Протокол File: Использование протокола
file://
затрудняет загрузку скриптов с удалённых серверов. - Кросс-доменные скрипты: При использовании скриптов с других доменов убедитесь, что применяется HTTPS для обеспечения безопасности.
Рекомендация: Если возможно, размещайте скрипты на своём сервере. Это поможет избежать проблем, связанных с протоколом file://
при разработке локально.
Структура URI и применение схем, относительных протоколу
Структура URL, описанная в RFC 3986, включает схему, указания на сервер, путь, запрос и фрагмент. Отсутствие явного указания схемы позволяет автоматически применять протокол, на котором загружена страница.
- Стандарты URI: Описаны в RFC 3986.
- URL без явного указания схемы: Адрес без
http:
илиhttps:
позволяет автоматически переключаться между протоколами.
Применение: Очень полезно при использовании CDN, внешних ресурсов и в случаях, когда необходимо поддерживать работу сайта как по протоколу HTTP, так и по HTTPS.
Рекомендации по использованию
Применение схем, относительных протоколу, требует осмысленного подхода:
- Тестирование: Всегда проверяйте надежность работы на различных протоколах и с разнообразным набором настроек безопасности.
- Предсказуемость: Учитывайте нюансы работы различных браузеров.
- Обдуманный выбор: Сравните удобство использования метода с возможными проблемами и рисками.
Визуализация
http:// Космический корабль X-Wing (🚀) может перемещаться только в галактике HTTP (🌌)
https:// Millennium Falcon (🚤) путешествует только в защищённой галактике HTTPS (🌌🔒)
// TARDIS (🛸): Может свободно перемещаться между обеими галактиками, в зависимости от источника.
<script src="http://example.com/script.js"> // X-Wing
<script src="https://example.com/script.js"> // Millennium Falcon
<script src="//example.com/script.js"> // TARDIS: Гибко адаптируется к протоколу HTTP или HTTPS
Использование //
подобно путешествию на TARDIS (🛸) — это универсальный способ для плавного перехода между протоколами.
Полезные материалы
- Что такое URL? – MDN Web Docs
- HTML и URL – W3C
- Можно ли заменить все ссылки http:// просто на //? – Stack Overflow
- Схема относительно используемого протокола – Пол Айриш
- RFC 3986 – Унифицированный идентификатор ресурсов (URI): Общая синтаксис – IETF
- Can I use... Поддержка таблиц для HTML5, CSS3 и прочего