[解決済み] クエリ文字列のキーは大文字と小文字を区別しますか?
質問
このようなurlがあるとします。
http://www.example.com?key=123&KEY=198
の結果はどうなるのでしょうか?
request.querystring("key")
and
request.querystring("KEY")
少し混乱しています。
どのように解決するのですか?
URI の RFC にはこうあります。
6.2.2.1. 大文字小文字の正規化
URIが汎用構文のコンポーネントを使用するとき、コンポーネント構文の等価ルールが常に適用されます。すなわち、スキームとホストは大文字と小文字を区別せず、したがって小文字に正規化されるべきです。例えば、URI HTTP://www.EXAMPLE.com/ は次のように等価です。 http://www.example.com/ .
他の一般的な構文の構成要素は、スキームで特に定義されない限り、大文字と小文字が区別されると仮定されます(セクション6.2.3参照)。
scheme (ここでは "http"), host (サーバ名) は大文字と小文字を区別しませんが、いずれにせよ小文字にする必要があることに注意してください。残りの部分は、大文字と小文字を区別しないと明示されている別のスキームを使用している場合を除き、大文字と小文字を区別します。
つまり、仕様によると、すべての http ベースの URI において、キーと KEY は異なるものなのです。
編集する それは、独自の URI を定義するカスタム スキームや当局には当てはまりますが、http は誰もが準拠する明確に定義された仕様です (または、たとえばパイプ文字を区切り文字とする http クエリを持つことができます。この場合の混乱を想像してみてください)。そこでのカオスを想像してみてください!)
その HTTP の RFC 仕様 にはこうあります。
スキームとホストは大文字と小文字を区別せず、通常は小文字で提供されます。 他のすべてのコンポーネントは大文字と小文字を区別して比較されます。 で比較されます。 reserved"セット内の文字以外の文字は、パーセントエンコードされたオクテットと同じです。 は,パーセントエンコードされたオクテットと等価であり,通常の形式は,それらをエンコードしないことである。 通常の形式は、それらをエンコードしないことです([RFC3986]のセクション 2.1 と 2.2 を参照)。
つまり、HTTP スキームの仕様で定義されている URI のクエリ部分は、大文字と小文字が区別されるのです。Microsoft がクエリ文字列に対して大文字と小文字を区別しないパーサーを持っている場合、そのパーサーは仕様に適合していません。このレベルのこだわりはあまり重要ではないと思います。
関連
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] encodeURI / encodeURIComponentの代わりにescapeを使用するのはどのような場合ですか?
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] HTTPヘッダーの大文字と小文字は区別されますか?
-
[解決済み] クエリ文字列パラメータのJava URLエンコーディング
-
[解決済み] RESTリソースの命名規則はSingularとPluralのどちらを使用すべきですか?
-
[解決済み] サブドメインとドメイン間でCookieを共有する
-
[解決済み] C#でURLのクエリ文字列を作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] サブドメインとドメイン間でCookieを共有する
-
[解決済み] ベーシック認証における「レルム」とは
-
[解決済み】AngularでHTTPリクエストにURL引数(クエリ文字列)を渡すには?
-
[解決済み】HTTPヘッダ(キャッシュコントロール用)を設定する方法は?)
-
[解決済み】HTTPの "Content-Type "ヘッダーのすべての可能な値は何ですか?
-
[解決済み] PragmaヘッダーとCache-Controlヘッダーの違い?
-
[解決済み] サーバーサイドでCookieを削除する正しい方法
-
[解決済み] ログインページにリダイレクトする際の正しいHTTPステータスコードは何ですか?