Две косые черты в атрибуте url/src/href
Возможный дубликат:
URI, начинающийся с двух слешей... как они себя ведут?
Абсолютные URL, пропускающие протокол (схему), чтобы сохранить тот из текущей страницы
сокращение как // для тегов скрипта и ссылки? кто-нибудь видел / использовал это раньше?
Я просматривал исходный текст HTML5 Reset, когда заметил следующую строку:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
Почему URL начинается с двух косых черт? Это сокращение для http://
?
2 ответа
"Две косые черты" - это обычное сокращение для "любого протокола, который используется сейчас".
Наиболее известные как "относительные протоколы URL", они особенно полезны, когда элементы, такие как файл JS в вашем примере, могут быть загружены из http
или https
контекст. Используя относительные URL протокола, вы можете избежать
if (window.location.protocol === 'http:') {
myResourceUrl = 'http://example.com/my-resource.js';
} else {
myResourceUrl = 'https://example.com/my-resource.js';
}
тип логики по всей вашей кодовой базе (при условии, конечно, что сервер в example.com
способен обслуживать ресурсы как через http
а также https
).
Ярким примером из реальной жизни является движок электронной коммерции Magento: по соображениям производительности страницы магазина используют простые http
по умолчанию, тогда как оформление заказа https
включен.
Когда на жестко запрограммированные ресурсы (например, рекламные баннеры в заголовке сайта) ссылаются не относящиеся к протоколу относительные URL (т.е. http://example.com/banner.jpg
), клиенты достигают https
включенная проверка будет встречена довольно недружелюбно
"На этой странице есть небезопасные элементы"
подсказка - которая, как вы можете себе представить, отбрасывает среднего неопытного человека.
Если вышеупомянутый ресурс ссылается через //example.com/banner.jpg
тем не менее, браузер позаботится о добавлении правильного протокола.
tl; dr: При малейшей возможности смешанной среды http/https просто используйте относительные URL-адреса с двойной косой чертой / протоколом для загрузки ваших ресурсов - при условии, что на хосте, обслуживающем контент, включены как http, так и https.
Он автоматически добавит https или http, в зависимости от того, как был сделан запрос.