URI, начинающийся с двух косых черт... как они себя ведут?
В последнее время я видел рабочие кодовые блоки:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
И в соответствии с RFC 2396 (синтаксис URI) и RFC 2616 (HTTP 1.1) эти URI, начинающиеся с двух косой черты, действительны, но, к сожалению, RFC их действительно не объясняют.
Может ли кто-нибудь указать мне ресурс, который объясняет, как браузеры будут/должны/должны обрабатывать эти URI?
Ответы
Ответ 1
Ресурс, который вы ищете, это RFC 3986.
См. раздел 4.2 и раздел 5.4. Цитата из последнего:
Примеры разрешения ссылок
В представлении с четко определенным базовым URI:
http://a/b/c/d;p?q
относительная ссылка преобразуется в ее целевой URI следующим образом:
"g:h" = "g:h"
"g" = "http://a/b/c/g"
"./g" = "http://a/b/c/g"
"g/" = "http://a/b/c/g/"
"/g" = "http://a/g"
"//g" = "http://g"
"?y" = "http://a/b/c/d;p?y"
"g?y" = "http://a/b/c/g?y"
"#s" = "http://a/b/c/d;p?q#s"
"g#s" = "http://a/b/c/g#s"
"g?y#s" = "http://a/b/c/g?y#s"
";x" = "http://a/b/c/;x"
"g;x" = "http://a/b/c/g;x"
"g;x?y#s" = "http://a/b/c/g;x?y#s"
"" = "http://a/b/c/d;p?q"
"." = "http://a/b/c/"
"./" = "http://a/b/c/"
".." = "http://a/b/"
"../" = "http://a/b/"
"../g" = "http://a/b/g"
"../.." = "http://a/"
"../../" = "http://a/"
"../../g" = "http://a/g"
Это означает, что когда базовый URI равен http://a/b/c/d;p?q
, и вы используете //g
, относительная ссылка преобразуется в http://g
.
Ответ 2
Это относительные URL-адреса . Они указывают на адрес, сохраняя текущий протокол.
Эта нотация часто используется для предотвращения проблемы с "смешанным контентом" (предупреждающее сообщение IE, жалующееся на ресурсы http
и https
на той же странице HTTPS).
Обновление: официальная документация в RFC 3986:
Относительная ссылка, начинающаяся с двух символов косой черты, называется ссылка на сетевой путь; такие ссылки редко используются. относительная ссылка, начинающаяся с одного символа косой черты, называется ссылкой на абсолютный путь. Относительная ссылка, которая делает не начинать с символа косой черты, называется ссылкой относительного пути.
Ответ 3
Это независимые от протокола URL-адреса. Если веб-страница обслуживается на https, тогда запрос использует https, если http, то http.
Польский ирландский, кажется, популяризировал их, включив его в свой шаблонный код.
Ответ 4
Помните, что это не только независимые от HTTP или https, но также файлы, ftp и т.д.
Это означает, что если вы открываете файл .htm непосредственно в своем браузере на локальном хосте, браузер будет разрешать//в качестве файла протокола, и ваша страница не будет работать. Это может вызвать проблемы с упакованными веб-сайтами как "родные" приложения с использованием таких инструментов, как Electron, PhoneGap и т.д.
Пример:
<script src="//mywebsite.com/resource.js"></script>
to
<script src="file://mywebsite.com/resource.js"></script>