it-swarm.com.de

Werden bei Abfragezeichenfolgen die Groß- und Kleinschreibung beachtet?

Angenommen, ich habe eine URL wie diese:

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

Was wird dann das Ergebnis sein?

request.querystring("key")

and 

request.querystring("KEY")

Ich bin etwas verwirrt.

Der RFC für URIs sagt:

6.2.2.1. Normalisierung der Groß- und Kleinschreibung

Wenn ein URI Komponenten der generischen Syntax verwendet, gelten immer die Regeln für die Komponentensyntaxäquivalenz. Das heißt, dass das Schema und der Host unabhängig von Groß- und Kleinschreibung sind und daher auf Kleinbuchstaben normiert werden sollten. Beispielsweise entspricht der URI http://www.example.com/ .

Bei den anderen generischen Syntaxkomponenten wird zwischen Groß- und Kleinschreibung unterschieden, sofern das Schema nichts anderes definiert (siehe Abschnitt 6.2.3).

Beachten Sie, dass bei Schema ("http" hier) und Host (Servername) die Groß- und Kleinschreibung nicht beachtet wird, jedoch Kleinbuchstaben verwendet werden sollten. Der Rest unterscheidet zwischen Groß- und Kleinschreibung, es sei denn, Sie verwenden ein anderes Schema, das ausdrücklich angibt, dass es unempfindlich sein soll.

Key und KEY sind also in allen http-basierten URIs je nach Spezifikation unterschiedlich.

59
gbjbaanb

Die Antwort von @ gbjbaanb ist falsch: Die RFCs geben nur den zulässigen Zeichensatz für die Abfragezeichenfolge an. Wie die Komponenten Pfad und Fragment der URI hat die Komponente Abfrage URI nur eine Bedeutung nur für die Behörde die Ressource.

Es liegt ganz in der Verantwortung dieser Behörde, ob bei diesem Material zwischen Groß- und Kleinschreibung unterschieden wird oder nicht.

Bei C # und IIS ist der Sicherungsspeicher für die analysierte Abfragezeichenfolge im Objekt HttpRequest ein System.Collections.Specialized.NameValueCollection which Groß-/Kleinschreibung wird nicht berücksichtigt (Standardeinstellung).

Da diese Klasse andere Konstruktoren anbietet, die die Bereitstellung unterschiedlicher Gleichheitsvergleicher ermöglichen, hindert absolut nichts eine Implementierung daran, die Groß- und Kleinschreibung zu berücksichtigen.

Da die Seite selbst (und das clientseitige Javascript) Zugriff auf die unformatierte URI haben, können sie damit tun, was sie wollen.

Wenn die Abfragezeichenfolge als Ergebnis einer Übermittlung von HTML-Formularen erstellt wird, stammen die Schlüssel (Namen) aus dem Wert des Attributs name für Formularsteuerelemente, bei dem in den HTML-Spezifikationen die Groß- und Kleinschreibung beachtet wird. Aber so nah wie ich weiß, macht das niemand wirklich.

Letztendlich müssen Sie also wissen, was der Anforderungshandler in Ihrer Abfragezeichenfolge erwartet. Es kann (oder auch nicht) zwischen Groß- und Kleinschreibung unterscheiden.

47
Nicholas Carey

Entsprechend hurl.it ist key gleich 123 und KEY, 198. Sie werden als zwei verschiedene Querystringe zugänglich sein.

8
Rémi Delhaye