Ури, начиная с двух косых ... как они себя ведут?

недавно я видел работающего код-блоки вроде этого:

<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>