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>