Две косые черты в атрибуте url/src/href

Возможный дубликат:
URI starting with two slashes … how do they behave?
Абсолютные URL-адреса, опускающие протокол (схему), чтобы сохранить одну из текущей страницы
сокращенно как//для script и теги ссылок? кто-нибудь видит/использует это раньше?

Я просмотрел источник HTML5 Reset, когда заметил в следующей строке:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>

Почему URL начинается с двух косых черт? Является ли это сокращением для http://?

Ответ 1

"Две косые черты" являются общим сокращением для "любого протокола, который используется прямо сейчас".

Наиболее известные как "относительные 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 E-Commerce: по соображениям производительности на страницах магазина по умолчанию используется обычный http, тогда как проверка https включена.

Когда жестко закодированные ресурсы (например, рекламные баннеры в заголовке сайта) ссылаются на относительные URL-адреса, отличные от протокола (т.е. http://example.com/banner.jpg), клиенты, достигшие проверки с включенным https, будут встречены с довольно недружественным

"на этой странице есть небезопасные элементы"

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

Если вышеупомянутый ресурс ссылается через //example.com/banner.jpg, хотя браузер позаботится о добавлении надлежащего протокола.

tl; dr: даже при минимальной возможности смешанной среды http/https просто используйте относительные URL-адреса с двойной косой чертой/протоколом для загрузки ваших ресурсов. Предполагая, что хост, обслуживающий контент, поддерживает HTTP и https.

Ответ 2

Он автоматически добавит https или http, в зависимости от того, как был выполнен запрос.