Ури, начиная с двух косых ... как они себя ведут?
недавно я видел работающего код-блоки вроде этого:
<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?
4 ответов
ресурс, который вы ищете является 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
.
это относительные URL-адреса протокола. они указывают на адрес, сохраняя текущий протокол.
эта нотация часто используется, чтобы избежать проблемы "смешанного содержимого" (предупреждение IE, жалующееся на http
и https
ресурсы на той же странице HTTPS).
обновление: официальная документация в RFC 3986:
относительная ссылка, которая начинается с двух символов косой называется сетевой путь ссылка; такие ссылки редко используются. Ля относительная ссылка, начинающаяся с одного символа косой черты называется ссылкой на абсолютный путь. Относительная ссылка, которая делает не начинать с символа косой черты называется ссылкой относительного пути.
Они являются независимыми от протокола url. Если веб-страница обслуживается по https, то запрос использует https, если http, то http.
Пол Айриш, похоже, популяризировал их, включив его в свой шаблонный код.
имейте в виду, что это не только адресу http или https независимые, но и , ftp, etc.
это означает, если вы открываете .НТМ файл непосредственно в вашем браузере на localhost,браузер будет решением // как файл протокол и ваша страница не будет работать. Это может вызвать проблемы на упакованных веб-сайтах как "родное" приложение с использованием таких инструментов, как Electron, PhoneGap, так далее.
пример:
<script src="//mywebsite.com/resource.js"></script>
to
<script src="file://mywebsite.com/resource.js"></script>