Что означает "абсурд" в терминах "путь-запрещение" в контексте RFC3986?

Смотрите: https://tools.ietf.org/html/rfc3986#section-3

И: https://tools.ietf.org/html/rfc3986#section-3.3

Происхождение "abempty" для меня загадочно, и быстрый поиск не дал никаких определений.

+5
источник поделиться
3 ответа

"abempty", поскольку в комментариях к правилу его использования в ссылке rfc вы ссылаетесь, это означает, что его значение может быть либо ab путь решения, либо пустой so (abempty).

+3
источник

"Abempty", что означает " от пустого", описывает отношение путей к предыдущему авторитету. Если значение path-abempty является релевантным, часть hier состоит из "//", полномочий и path-abempty. Компонент полномочий может иметь нулевую длину - схема:///является допустимым URI.

Однако, когда права доступа имеют нулевую длину, а путь пуст, нет никакого способа различить два компонента, следовательно, путь с отсутствующим путем - он "начинается с"/"или является пустым" (раздел 3.3) в зависимости от обстоятельств.,

Источник: http://w3-org.9356.n7.nabble.com/path-abempty-in-URI-td170118.html (см. Филдинг ответ на Petch.)

NB. Слово "abempty" не является портом слов абсолютного и пустого.

Пожалуйста:

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Часть hier не является обязательной в контексте "универсального" URI.

hier-part = ("//" authority path-abempty) / path-absolute / path-rootless / path-empty

Интересно, что двойная косая черта не обязательна, если уместно значение path path. И, немного забегая вперед, авторитет может быть нулевой длины:

reg-name = *( unreserved / pct-encoded / sub-delims )

Path-abempty релевантен, когда его старшая часть состоит из "//", полномочий и path-abempty. Path-abempty определяется как:

path-abempty = *( "/" segment )

RFC гласит: "При наличии полномочий путь должен быть либо пустым, либо начинаться с символа косой черты ("/")". Если reg-name имеет нулевую длину, случайное чтение этого оператора может указывать на допустимость следующего URI:

scheme://

Это не. Самое следующее предложение гласит: "Когда авторитет отсутствует, путь не может начинаться с двух символов косой черты ('//)". Это означает, что при синтаксическом анализе нашего URI, который начинается со слова "схема://", мы указываем возможность полномочий с нулевой длиной и пути нулевой длины - в противном случае мы могли бы остановиться прямо здесь, потому что URI был бы недействительным.

В этом случае, ни в коем случае не в общем случае, полномочия нулевой длины не могут быть обнаружены по пути нулевой длины. Следовательно, когда полномочие имеет нулевую длину, МЫ НЕ ИМЕЕМ ВЫБОРА, путь ДОЛЖЕН начинаться с косой черты (точнее, он должен совпадать с путем, не имеющим пути) и отличать путь от полномочий; в противном случае, и я скажу это снова: URI будет недействительным.

Слово "abempty" не означает, что путь может быть абсолютным или пустым. Слово означает, что путь должен отличаться от авторитета, следовательно, он свободен, т.е. От пустого места.

Примеры:

Этот URI неоднозначен, потому что даже если он имеет полномочия нулевой длины и путь нулевой длины, нет способа отличить его от недопустимого URI, в котором пропущены права доступа и путь которого начинается с двух косых черт.

scheme://

Этот URI не является неоднозначным, так как он явно содержит полномочия нулевой длины и путь с отсутствующим путем.

scheme:///
0
источник

Учитывая его определение и контекст в RFC 3986, раздел 3.3: Я уверен, что abempty - это портманто абсолютного и пустого; в отличие от пустого с латинским ab-префиксом.

Возможные шаблоны пути определены как:

path-abempty  = *( "/" segment )                    ; begins with "/" or is empty
path-absolute = "/" [ segment-nz *( "/" segment ) ] ; begins with "/" but not "//"
path-noscheme = segment-nz-nc *( "/" segment )      ; begins with a non-colon segment
path-rootless = segment-nz *( "/" segment )         ; begins with a segment
path-empty    = 0<pchar>                            ; zero characters
  • Path-abempty - это, по сути, расширенный абсолютный путь в сочетании с пустым путем.
  • Path-absolute-or-empty становится пустым путем.

отказ

Мое утверждение основано исключительно на логических предположениях, так как я не мог найти слово этимология или кто его придумал. Так что, если у кого-то есть соответствующие знания, чтобы противоречить или подтвердить: пожалуйста, поделитесь!

0
источник

Посмотрите другие вопросы по метке или Задайте вопрос