Без протокола абсолютные URI с хостом в HTML? - PullRequest
3 голосов
/ 23 июля 2011

Я видел страниц , которые ссылаются на то, что выглядит как абсолютные URI с хостом, но без протокола. Например:

<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script>

Я предполагаю, что это означает «использовать тот же протокол, что и сейчас», поэтому родительская страница запросит https://mc.yandex.ru/metrika/watch.js, если его собственный протокол https.

Является ли этот синтаксис правильным? Часть стандарта? Что это значит?

1 Ответ

3 голосов
/ 23 июля 2011

Это называется «ссылка на сетевой путь».Документация для этого может быть найдена в RFC 3986 .В частности, см. Раздел 4.2:

Относительная ссылка, которая начинается с двух символов косой черты, называется
ссылка на сетевой путь;такие ссылки используются редко.

И раздел 5.4:

В представлении с четко определенным базовым URI

  http://a/b/c/d;p?q

относительная ссылкапреобразуется в целевой URI следующим образом ...

"g:h"           =  "g:h"
...
"//g"           =  "http://g"
...

Таким образом, URI, начинающийся с двойной косой черты, преобразуется для соответствия базовому URI.Мне известно об одном использовании (фактически единственном, которое я когда-либо видел) при использовании CDN (например, при включении jQuery через Google CDN).Google размещает версию для протокола http, а другую - для протокола https, и использование этого формата URI приведет к загрузке правильной версии независимо от того, какой протокол вы используете.

Обновление (только что найдя и прочитав эту статью )

Похоже, что использование этого формата URI на всей странице может предотвратить «Эта страница содержит как безопасные, так и незащищенные элементы»."ошибка в IE.Однако стоит отметить, что этот формат вызывает файлы, включенные с помощью элемента link, или директивы @import, что приводит к тому, что включаемый файл запрашивается дважды.Все остальные ресурсы (такие как изображения и якоря) должны работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...