[解決済み] HTTP GET クエリの重複キーの権威位置
質問
HTTP GETのクエリ文字列が重複するフィールドを持つ動作について、以下のような権威ある情報を見つけるのに苦労しています。
http://example.com/page?field=foo&field=bar
で、特にその順番が守られているかどうか。ほとんどのウェブ指向言語では、キー "field" に関連付けられた foo と bar の両方を含む配列を生成しますが、この点に関する権威ある声明(RFC など)が存在するかどうかを知りたいのです。
RFC 3986
には、以下のセクションがあります。
3.4. Query
は、key=valueのペアに言及していますが、順序や重複するフィールドなどをどのように解釈するかについては、何も書かれていません。これは、バックエンドに依存し、そのRFCの範囲外であるため、意味があるのですが...。
デファクトスタンダードが存在するとはいえ、興味本位で権威あるソースが欲しいところです。
どのように解決するのですか?
この質問がなされ、12年前に受け入れられた回答が書かれたときとは状況が変わっているようです。私は、今、私たちは権威あるソースを手に入れたと信じています。WHATWG URL Standard では、クエリ文字列の抽出と解析のプロセスをセクション 6.2 で詳しく説明しています (
https://url.spec.whatwg.org/#interface-urlsearchparams
) と x-www-form-urlencoded のパースに関するセクション 5.1 (
https://url.spec.whatwg.org/#urlencoded-parsing
). パース出力は "名前-値タプルの最初は空のリストで、名前と値の両方が文字列を保持します" ここでリストは、有限の
順序付き
のシーケンスであり、キーと値のペアはURLの中に現れる順番にこのリストに追加される。最初は繰り返されるキーについて言及されていませんが、セクション 6.2 の URLSearchParams クラスのいくつかのメソッド (
https://url.spec.whatwg.org/#interface-urlsearchparams
) は、順番について明確な期待値を設定しています: "The
getAll(name)
メソッドの手順は、名前がnameであるすべての名前-値ペアの値を返すことである...。
リスト順
"です。
sort()
メソッドは、" を指定します。
同じ名前を持つ名前-値ペア間の相対的な順序は保持されなければならない。
"(強調)。sortメソッドが追加されたコミットで参照されているGithub issueを調べると、当初の提案ではキーが同一である値でソートすることになっていましたが、次のように変更されています。 "デフォルトソートが値の順序に影響しない理由は
値の順序は重要である
. 値の順番を動かしても大丈夫と考えるべきではありません。" (
https://github.com/whatwg/url/issues/26#issuecomment-271600764
)
関連
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] 検証失敗または重複が無効な場合のREST HTTPステータスコード
-
[解決済み] PythonでHTTP GETを行う最短の方法は何ですか?
-
[解決済み] HTTP GETリクエストの最大長
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み】AngularでHTTPリクエストにURL引数(クエリ文字列)を渡すには?
-
[解決済み】302と307のリダイレクトの違いは何ですか?
-
[解決済み] HTTPのPOSTメソッドをキャッシュすることは可能ですか?
-
[解決済み] URLのプロトコルを継承するために、先頭のダブルスラッシュを使用することに何か不都合はありますか? 例:src="//domain.com"
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
youtubeマッチチャンネル(チャンネル)
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?
-
[解決済み] URLパラメータをJavaScriptのオブジェクトに変換する方法は?[重複しています]。
-
[解決済み] HTMLチェックボックスのチェックを外してPOSTする
-
[解決済み】URI文字列をパースして名前-値コレクションを作成する方法
-
[解決済み】GETリクエストで同じパラメータ名で複数の値を渡す場合の正しい方法
-
[解決済み】「HTTPはステートレスプロトコルである」と言われているのはなぜですか?
-
[解決済み] 304 Not Modified」は具体的にどのように機能するのですか?
-
[解決済み] HTTPリダイレクトコードの違い