Les clés de chaîne de requête sont-elles sensibles à la casse?

Supposons que j’ai une URL comme ceci:

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

Alors quel sera le résultat de

 request.queryssortingng("key") and request.queryssortingng("KEY") 

Je suis un peu confus.

Le RFC pour les URI dit:

6.2.2.1. Normalisation de cas

Lorsqu’un URI utilise des composants de la syntaxe générique, les règles d’équivalence de la syntaxe des composants s’appliquent toujours; à savoir que le schéma et l’hôte sont insensibles à la casse et doivent donc être normalisés en minuscules. Par exemple, l’URI équivaut à http://www.example.com/ .

Les autres composants de syntaxe génériques sont supposés sensibles à la casse, sauf indication contraire spécifique du schéma (voir au paragraphe 6.2.3).

Notez que le schéma (“http” ici), hôte (nom du serveur) est insensible à la casse mais devrait être en minuscule de toute façon. Le rest est sensible à la casse, sauf si vous utilisez un schéma différent qui dit explicitement qu’il devrait être insensible.

Donc, les clés et les clés sont différentes dans tous les URI basés sur http selon les spécifications.

La réponse de @gbjbaanb est incorrecte: les RFC spécifient uniquement le jeu de caractères autorisé pour la chaîne de requête. À l’instar des composants path et fragment de l’URI, le composant URI de requête n’a de sens que pour l’autorité fournissant la ressource.

Il appartient entièrement à cette autorité de déterminer si ces éléments sont sensibles à la casse ou non.

Dans le cas de C # et IIS, le magasin de sauvegarde pour la chaîne de requête analysée dans l’object HttpRequest est un System.Collections.Specialized.NameValueCollection qui se trouve être insensible à la casse (par défaut).

Comme cette classe offre d’autres constructeurs, il est possible de fournir différents comparateurs d’égalité, rien n’empêche absolument une implémentation de la rendre sensible à la casse.

De plus, comme la page elle-même (et le javascript côté client) ont access à l’URI brute, ils sont libres de faire ce qu’ils veulent avec.

Si la chaîne de requête est générée à la suite d’une soumission de formulaire HTML, les clés (noms) proviennent de la valeur de l’atsortingbut name contrôles de formulaire, qui, selon les spécifications HTML, sont sensibles à la casse. Mais aussi proche que je sache, personne ne le fait vraiment.

Donc, à la fin de la journée, vous devez savoir ce que le gestionnaire de requêtes attend dans votre chaîne de requête. Il pourrait (ou pas) être sensible à la casse.

Selon hurl.it , la key sera égale à 123 et KEY , 198 . Ils seront accessibles sous la forme de deux chaînes de requête différentes .