Две косые черты в атрибуте 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, в зависимости от того, как был сделан запрос.

Другие вопросы по тегам