Чувствительны ли ключи строки запроса к регистру?



Предположим, что у меня есть такой url:



http://www.example.com?key=123&KEY=198


Тогда каков будет результат



request.querystring("key")

and

request.querystring("KEY")


Я немного запутался.

748   3  

3 ответов:

RFC для URIs говорит:

6.2.2.1. Нормализация Случая

Когда URI использует компоненты универсального синтаксиса, всегда применяются правила эквивалентности синтаксиса компонентов, а именно, что схема и узел не зависят от регистра и поэтому должны быть нормализованы до нижнего регистра. Например, URI эквивалентен http://www.example.com/.

Предполагается, что другие компоненты общего синтаксиса чувствительны к регистру, если они не определены специально. в противном случае по схеме (см. раздел 6.2.3).

Обратите внимание, что scheme ("http" здесь), host (имя сервера) не чувствительны к регистру, но должны быть в нижнем регистре в любом случае. Остальное зависит от регистра, если вы не используете другую схему, которая явно говорит, что она должна быть нечувствительной.

Таким образом, ключ и ключ-это разные вещи во всех URI на основе http в соответствии со спецификацией.

Ответ@gbjbaanb неверен: в RFC указывается только допустимый набор символов для строки запроса. Как и компонентыпути ифрагмента URI, компонентзапроса URI имеет значениетолько для органа , предоставляющего ресурс.

Это полностью зависит от того, является ли этот материал чувствительным к регистру или нет.

В случае C# и IIS резервным хранилищем для анализируемой строки запроса в объекте HttpRequest является System.Collections.Specialized.NameValueCollection который оказывается нечувствительным к регистру (по умолчанию).

Поскольку этот класс предлагает другие конструкторы, позволяющие предоставлять различные компараторы равенства,нет абсолютно ничего, что помешало бы реализации сделать его чувствительным к регистру.

Далее, поскольку сама страница (и клиентский javascript) имеют доступ к необработанному URI, они могут делать с ним все, что захотят.

Если строка запроса построена в результате отправки HTML-формы, то ключи (имена) берутся из значения атрибута form controls name, который, как говорят спецификации HTML, чувствителен к регистру. Но, насколько мне известно, никто этого не делает.

Таким образом, в конце дня вы должны знать, что ожидает обработчик запроса в строке запроса. Он может быть (а может и не быть) чувствителен к регистру.

Согласно hurl.it, key будет равно 123 и KEY, 198. Они будут доступны в виде двух различных строк запросов .

Comments

    Ничего не найдено.