Допустима строка запроса с / в?

Из-за недопонимания с партнерским партнером мы работаем с URL, который они называют на нашем сервере, были перепутаны.

Это URL, который они должны вызывать на нашем сервере:

 /AAAAAAAA/?b=CCCCCCC

к сожалению, это было реализовано в их системе, как это

 ?b=CCCCCCC/AAAAAAA

Я могу легко разобрать компоненты, но я боюсь, что параметр строки запроса с / в нем на самом деле не является действительным URL.

Является ли / в URL действительно допустимым - или я должен быть обеспокоен. При каких обстоятельствах может быть незакодировано / вызвать проблемы в строке запроса.

3 ответа

Решение

Хотя у меня никогда не было проблем, они технически не разрешены согласно RFC 2396:

Внутри компонента запроса символы ";", "/", "?", ":", "@", "&", "=", "+", "," И "$" зарезервированы.

Но, как я уже сказал... Я никогда не сталкивался с какими-либо проблемами. Я думаю, что это проблема со старыми браузерами больше всего, но, может быть, кто-то может пролить немного света на проблему, которую это вызывает?

Согласно RFC 3986: унифицированный идентификатор ресурса (URI): общий синтаксис (с 2005 года), да, / разрешено в компоненте запроса. Это BNF для строки запроса: (в Приложении A в RFC 3986)

query         = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

В спецификации сказано:

  • Косая черта ("/") и знак вопроса ("?") Могут представлять данные в компоненте запроса.
  • поскольку компоненты запроса часто используются для передачи идентифицирующей информации в виде пар "ключ = значение", а одно часто используемое значение является ссылкой на другой URI, иногда для удобства использования иногда лучше избегать процентного кодирования этих символов

Вот связанный вопрос: Строка запроса: может ли строка запроса содержать URL-адрес, который также содержит строки запроса?

Косая черта - это "зарезервированный символ" в части запроса URL-адреса согласно разделу 3.4 RFC 2396, поэтому согласно разделу 2.2 он должен быть закодирован. То есть часть запроса может содержать %2F но не должен содержать /,

Другие вопросы по тегам