равно как и "#"
"" — относительная ссылка, но путь пустой, поэтому тупо перезагрузится текущая страница, огрубляя, браузер делает так:
«текущий uri» + "" -> перезагрузить страницу
у mailto:, magnet: и иже с ними нет части authority, есть path, query и т.д., но authority нету.
//относится именно к компоненте authority.
Если, например посмотреть RFC по mailto, то можно увидеть вот такой момент:
mailto:addr1%2C%20addr2
is equivalent to
mailto:?to=addr1%2C%20addr2
is equivalent to
mailto:addr1?to=addr2
Таким образом, mailto:addr@gmail.com это всего лишь специфичный для mailto синтаксис аналогичный mailto:?to=addr@gmail.com, т.е. для схемы mailto путь, если он задан, в конечном итоге преобразуется в хедер «to».
Истолковать можно следующим образом:
схема — file
хост — нулевой, т.е. локалхост
путь — /C:/test.htm, т.е. здесь путь отсчитывается от корня, вот и получается 3 слеша
Они не должны быть регистронезависимы, они могут быть регистронезависимы.
Спецификация допускает использование как верхнего так и нижнего регистров, остальное зависит от:
а) Спецификации схемы, которая может наложить эти ограничения, т.е. у HTTP нормализация URI производится таковым образом, что схема и хост — регистронезависимы, а все остальное нормализуется как регистрозависимое;
б) Реализации, тут уже кто на что способен, как говорится.
Смотрел приложенное видео в надежде на не менее исчерпывающую информацию.
В который раз офигеваю со злости комьюнити хабра, лишь бы минусами друг в друга покидаться, как будто сложно просто ответить, нет, надо еще и в карму насрать.
P.S. Да, еще я бы акцентировал, что PATH и QUERY регистрозависимы, в отличие от HOST.
scheme — регистронезависим
host — регистронезависим
path — в зависимости от имплементации файловой системы сервера
query — регистрозависим
fragment — в зависимости от браузера
Читается как relative-part и/или [ "?" и query ] и/или [ "#" и fragment ]
Что есть hier-part? Это authority + path, но path может быть нулевым, то есть hier-part = authority [ "/" path ], или если так не нравится, то можно не оборачивать в квадратные скобки, но тогда учитывать что отсутствие path это тоже path.
Что есть relative-part? Это "/" path / path, то есть relative-part = ["/"] path
То есть, резюмируя получаем следующую ABNF формулу:
То есть всегда обязательны либо scheme ":" authority и любой набор оставшихся компонент и тогда это абсолютный URI, либо любой набор компонент при отсутствующей scheme ":" authority и тогда это относительный URI.
Ссылки сетевого пути в расчет не берутся ибо это специфичный вариант, разряда «исключение из общих правил».
Таким образом, ничего противоречащего спецификации в приведенном вами отрывке статьи нет.
Да, конкретно скрипты из CDN гугла так и подключаются, все ссылки которые оттуда копируются идут в формате ссылок сетевого пути, на хабрасторадже так же.
Но это чревато в случае использования из под https, ибо https есть не везде.
А вообще, если судить по регулярке, которая описана в RFC, то они в конечном итоге делают разделение как я указал выше.
Описываемые спецсимволы разделяют под-компоненты, но в них не входят, исключение составляет путь, он включает в себя и начальный и конечный слеш.
Ну вообще да, т.е. когда я писал у меня не было мыслей о том что оно может быть как-либо двояко воспринято, но вот прецедент.
Когда оканчивается включительно так обычно и пишут «включительно» %)
Хм, действительно есть некая двоякость в описании, но вообще, для всех под-компонент, кроме пути, границы указаны исключающим образом, т.е. ни краевые слеши, ни знаки вопроса и т.д. не входят в сами под-компоненты,
т.е. для URI http://habrahabr.ru:80/post/232385/?some=val#comment_8495021:
"" — относительная ссылка, но путь пустой, поэтому тупо перезагрузится текущая страница, огрубляя, браузер делает так:
«текущий uri» + "" -> перезагрузить страницу
//относится именно к компоненте authority.
Если, например посмотреть RFC по mailto, то можно увидеть вот такой момент:
Таким образом, mailto:addr@gmail.com это всего лишь специфичный для mailto синтаксис аналогичный mailto:?to=addr@gmail.com, т.е. для схемы mailto путь, если он задан, в конечном итоге преобразуется в хедер «to».
Для относительного URI вообще все опционально, но при этом схема отсутствует.
Как-то так, завтра по-утру на свежую голову поправлю.
схема — file
хост — нулевой, т.е. локалхост
путь — /C:/test.htm, т.е. здесь путь отсчитывается от корня, вот и получается 3 слеша
Я это планировал включить в следующую часть.
Спецификация допускает использование как верхнего так и нижнего регистров, остальное зависит от:
а) Спецификации схемы, которая может наложить эти ограничения, т.е. у HTTP нормализация URI производится таковым образом, что схема и хост — регистронезависимы, а все остальное нормализуется как регистрозависимое;
б) Реализации, тут уже кто на что способен, как говорится.
В который раз офигеваю со злости комьюнити хабра, лишь бы минусами друг в друга покидаться, как будто сложно просто ответить, нет, надо еще и в карму насрать.
Только щас понял что действительно неверно было написано, пост подправил, должно быть так:
Искренние извинения, сказывается недостаток сна (╥_╥)
scheme — регистронезависим
host — регистронезависим
path — в зависимости от имплементации файловой системы сервера
query — регистрозависим
fragment — в зависимости от браузера
Читается как
URI и/или relative-ref
Читается как
scheme и ":" и hier-part и/или [ "?" и query ] и/или [ "#" и fragment ]
Читается как
relative-part и/или [ "?" и query ] и/или [ "#" и fragment ]
Что есть
hier-part
? Этоauthority + path
, ноpath
может быть нулевым, то естьhier-part = authority [ "/" path ]
, или если так не нравится, то можно не оборачивать в квадратные скобки, но тогда учитывать что отсутствиеpath
это тожеpath
.Что есть
relative-part
? Это"/" path / path
, то естьrelative-part = ["/"] path
То есть, резюмируя получаем следующую ABNF формулу:
То есть всегда обязательны либо
scheme ":" authority и любой набор оставшихся компонент
и тогда это абсолютный URI, либо любой набор компонент при отсутствующейscheme ":" authority
и тогда это относительный URI.Ссылки сетевого пути в расчет не берутся ибо это специфичный вариант, разряда «исключение из общих правил».
Таким образом, ничего противоречащего спецификации в приведенном вами отрывке статьи нет.
Так кто из нас тут глупости то пишет?
Там указаны все комбинации при которых ссылка = URI, про относительность и абсолютность ни слова, про это более чем подробно рассказано в разделе 2.1
Но это чревато в случае использования из под https, ибо https есть не везде.
Бачок то железный, так коснешься ненароком и взбодришься)
Описываемые спецсимволы разделяют под-компоненты, но в них не входят, исключение составляет путь, он включает в себя и начальный и конечный слеш.
Когда оканчивается включительно так обычно и пишут «включительно» %)
т.е. для URI
http://habrahabr.ru:80/post/232385/?some=val#comment_8495021
:Попробую как-нибудь перефразировать сейчас то что в статье.