Действителен ли URL-адрес с // в разделе пути?

У меня есть вопрос относительно URL-адресов:

Я прочитал RFC 3986, и у меня все еще есть вопрос об одном URL:

Если URI содержит компонент полномочий, то компонент пути
должен быть либо пустым, либо начинаться с символа косой черты ("/"). Если URI не содержит компонента полномочий, то путь не может начинаться
с двух символов косой черты ("//"). Кроме того, ссылка URI
(раздел 4.1) может быть ссылкой на относительный путь, и в этом случае
первый сегмент пути не может содержать символ двоеточия (":"). ABNF
требует пяти отдельных правил для устранения неоднозначности этих случаев, только одно из которых будет соответствовать подстроке пути в данной ссылке URI. Мы используем общий термин "компонент пути" для описания подстроки URI
, сопоставленной парсером с одним из этих правил.

Я знаю, что //server.com:80/path/info действителен (это относительный URL-адрес схемы)

Я также знаю, что http://server.com:80/path//info действителен.

Но я не уверен, справедливо ли следующее:

http://server.com:80//path/info

Проблема, стоящая за моим вопросом, заключается в том, что файл cookie не отправляется на http://server.com:80//path/info при создании с помощью URI http://server.com:80/path/info с ограничением на /path


person Christian Kuetbach    schedule 11.12.2013    source источник


Ответы (1)


См. URL-адрес с несколькими косыми чертами, что-нибудь ломает?, Есть ли недостатки использования двойной косой черты в URL?, Что означает что означает двойная косая черта в URL-адресах? и RFC 3986 - Единый идентификатор ресурса (URI): общий синтаксис< /а>.

Консенсус: браузеры будут выполнять запрос как есть, они не будут его изменять. Символ / является разделителем пути, но поскольку сегменты пути определяются как:

path-abempty  = *( "/" segment )
segment       = *pchar

Означает, что за косой чертой после http://example.com/ может следовать еще одна косая черта, и так до бесконечности. Серверы могут его игнорировать, но браузеры, как вы уже поняли, нет.

Фраза:

Если URI не содержит компонента полномочий, то путь не может начинаться с двух символов косой черты ("//").

Разрешает использовать URL-адреса, относящиеся к протоколу, но конкретно указывает, что в этом случае никакие органы (server.com:80 в вашем примере) не могут присутствовать.

Итак: да, это действительно, нет, не используйте это.

person CodeCaster    schedule 11.12.2013
comment
Если URI не содержит компонента полномочий, что это значит? Что такое авторитетный компонент? - person Black; 08.07.2021