Мой URL нарушает RFC 3986 (или другие) - PullRequest
1 голос
/ 23 марта 2012

Наша система указывает пользователям относительный путь в следующем формате:

/some_path/?query=string

Затем сервер отвечает на указанный путь. Является ли этот URL нарушением RFC, который кто-нибудь может сказать? (Я считаю, что RFC 3986 применимо.)

В частности, является ли предыдущий путь в порядке, даже если он не указывает имя файла, как в:

/some_path/file?query=string

1 Ответ

2 голосов
/ 26 марта 2012

То, что вы показываете, вероятно, в порядке. Вот более подробно:

Ваш вопрос немного расплывчат - вы ссылаетесь на URL, но то, что вы нам показываете, технически не является URL или URI. URL или URI должны иметь следующий синтаксис:

scheme://authority/path?query#fragment
eg: http://host.domain.ext/path/to?query=1#anchor1

То, что вы возвращаете, это относительный реф или, возможно (в зависимости от того, где вы его возвращаете, например, в теле XML) href

То, что вы, похоже, возвращаете (согласно RFC 3986) - это lativeURI . RFC показывает это как:

relativeURI    | relative-part [ "?" query ] 
relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty    

Что в некоторых случаях нормально.

Согласно HTTP RFC 2616 - некоторые значения заголовка могут быть возвращены как lativeURI , такие как Content-Location и Referer, тогда как другие (например, Location) определены как REQUIRING absoluteURI. Сказав это, большинство браузеров и других клиентов примут относительный URI там.

Да, путь без «имени файла» в вашем случае, вероятно, подходит и является допустимым относительным URI (относительной частью с добавленной строкой запроса). В качестве пути вы можете использовать любые допустимые символы, включая косую черту, если это необходимо (хотя это используется для представления иерархии, поэтому будьте осторожны).

...