Строка запроса: может ли строка запроса содержать URL-адрес, который также содержит строки запроса? - PullRequest
5 голосов
/ 22 ноября 2010

Пример:

http://foo.com/generatepdf.aspx?u=http://foo.com/somepage.aspx?color=blue&size=15

Я добавил тег iis, потому что, полагаю, он также зависит от того, какую серверную технологию вы используете?

Ответы [ 5 ]

3 голосов
/ 22 ноября 2010

Технология сервера не должна иметь значения.

Когда вы передаете значение в строку запроса, вам нужно url кодировать пару имя / значение. Если вы хотите передать значение, содержащее специальный символ, такой как знак вопроса (?), Вам просто нужно закодировать этот символ как% 3F. Если затем вам нужно было рекурсивно передать другую строку запроса в закодированный URL-адрес, вам нужно будет дважды / тройно / и т. Д. Закодировать URL-адрес, что приведет к оригиналу? превращается в% 253F,% 25253F и т. д.

2 голосов
/ 22 ноября 2010

Вы, вероятно, захотите UrlEncode URL, который находится в строке запроса.

0 голосов
/ 14 июля 2014

Как указано в http://en.wikipedia.org/wiki/Query_string

W3C рекомендует, чтобы все веб-серверы поддерживали разделители точек с запятой в дополнение к разделителям амперсандов (ссылка указана на этой вики-странице) , чтобы разрешить применение /x-www-form-urlencoded-кодированные строки запроса в URL-адресах в HTML-документах без необходимости экранировать сущности от амперсандов.

Итак, я полагаю, что ответ на вопрос - да, и вы должны изменить его на ";"точка с запятой «&» и обычно используется для разделителя ключ = значение.

0 голосов
/ 17 апреля 2011

Да, насколько я могу судить, это возможно согласно RFC 3986: универсальный идентификатор ресурса (URI): общий синтаксис (с 2005 года):

Это BNF для строки запроса :

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

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

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

(Но я полагаю, что ваш серверный фреймворк может или не может точно соответствовать спецификации.)

0 голосов
/ 22 ноября 2010

Нет, но вы можете закодировать URL и декодировать его позже.

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