[9]
[[URI]] の仕様書で使われている規則 [DFN[[CODE(ABNF)@en[query]]]]
は、 [[URI]] の[[照会]]部分
[WEAK[(最初の [CODE(URI)[?]] より後で、 [CODE(URI)[#]] より前の部分)]]
を表します。

* 仕様書

[REFS[
- [36] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-14 22:44:13 +09:00]] 版) <https://html.spec.whatwg.org/#dom-location-search>
]REFS]

* より具体的な構文

[11]
[[照会]] ([CODE(ABNF)@en[query]]) 
は非階層的方法で[[資源]]を識別するものとされています
[SRC[[[RFC 3986]] 3.4.]] が、それ以上の構文や意味は各
[[URI scheme]] に任されています。
(そして scheme によっては更に下位の名前空間管理者に任されています。)
しかし、実際の使われ方はおおむねいくつかのパターンに当てはまります。

- [CODE(ABNF)@en[[[param]]]] 方式 >>12
- [CODE(HTMLe)@en[[[isindex]]]] 方式 >>13

[12] '''[CODE(ABNF)@en[param]] 方式''':
名前と値の組を複数個列挙します。最もよく使われるのは名前と値の間に
[CODE(URI)[=]] を挟み、名前・値の組同士の間に [CODE(URI)[&]]
を挟んで [SAMP(URI)@en[name1=value1&name2=value2]]
のようにします。

- 名前と値の間の区切子 (普通は [CODE(URI)[=]])
- 組同士の間の区切子 ([CODE(URI)[&]] と [CODE(URI)[;]]
が多く、 [CODE(URI)[,]], [CODE(URI)[$]], [CODE(URI)[|]] (構文違反),
[CODE(URI)[!]] などが使われることもあります。)
- 使用できる名前の種類や値の種類
- 同じ名前を複数回使っても良いか
- 組の順序は意味を持つか
- [[予約文字]]・[[非予約文字]]・[[百分率符号化]]の使用可否
- [CODE[[[+]]]] の意味

などにより、幾つかのバリエーションがあります。

主な使用例:
[FIG(list)[
- [CODE(URI)@en[[[http]]:]] + [[HTML]] ([[Web Forms]])
- [CODE(URI)@en[[[mailto]]:]]
- [CODE(URI)@en[[[ftp:]]]]
- [CODE(URI)@en[[[ni:]]]]
- [CITE@en[RFC 4387 - Internet X.509 Public Key Infrastructure Operational Protocols: Certificate Store Access via HTTP]] ([TIME[2014-06-08 08:24:17 +09:00]] 版) <http://tools.ietf.org/html/rfc4387#section-2>
- [16] [[媒体素片]]
- [[Common Media Client Data]]

]FIG]

[17] 次の場面では [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]]
が使われています。
[FIG(short list)[
- [[フォームの提出]]
- [[OAuth 1.0]]
- [[OAuth 2.0]]
- [[RFC 2854]] を参照
-- [[HTTP Certificate Store Interface]]

]FIG]

[64] 次の場面では [CODE(MIME)@en[application/x-www-form-urlencoded]]
の [CODE[+]] 構文を使わない[[パーセント符号化]]が使われています。
[FIG(short list)[
- [[フォームの提出]] ([CODE(URI)@en[mailto:]])
]FIG]

[13] '''[CODE(HTMLe)@en[isindex]] 方式''':
複数の値を与える時に [CODE(URI)[+]] で区切ります。
単純な一次元配列です。

主な使用例:
[FIG(list)[
- [[HTML]] の [CODE(HTMLe)@en[[[isindex]]]] 要素
- [[スクリプト命令行]]
]FIG]

[60] [CODE(HTMLa)@en[ismap]] の[[ハイパーリンク接尾辞]]形式

[14]
[CITE@en[Specifying time intervals in URI queries and fragments of time-based Web resources]] ([CODE[2006-05-06 10:39:46 +09:00]] 版) <http://annodex.net/TR/URI_fragments.html#rfc.section.3>

[15] [CODE(URI)@en[[[coffee:]]]] [[URL scheme]] では [CODE(HTTP)[[[,]]]]
区切りのリストとなっています。

[22] [CODE(URI)@en[[[z39.50r:]]]] / [CODE(URI)@en[[[z39.50s:]]]] では、
値の後に [CODE[;]] 区切りで名前、[CODE[=]]、値の組をいくつか指定できます。

** メモ

[DEL[

- [3] 2396 によれば、問い合わせでの予約文字は [CODE(regex)[ [;/?:@&=+,$] ]] です。 [CODE(URI)[?]] は問い合わせのそれ以前との分離のための予約。 [CODE(regex)[ [&$;=] ]] は [[HTTP]] などで問合せを[[引数]]的に解釈するのによく使われるもの。残る [CODE(regex)[ [/:@,] ]] はどうでしょうね? これらも [[CGIスクリプト]]なんかが意味を持たせて使っていたりするのかな。
- [4] >>3 [CODE(URI)[+]] が抜けてました。これはよく[[間隔]]の意味で使いますね。で、これを含めた10文字が、丁度 2396 の [CODE(ABNF)[reserved]] でした。つまり、予約文字全部が予約ですと、ただそれだけの意味でした。
- [5] >>3 [CODE(URI)[/]] はへたれ実装対策で escape encode した方が安全というのもあるでしょう。
]DEL]

[8] (>>3-5 の話は間違っていませんし [[RFC 3986]] でも変わっていませんが、
[CODE(ABNF)[[[query]]]] 固有の話としては出てこなくなりました。
このあたりの話については[[予約文字]]や[[百分率符号化]]の項を参照して下さい。)

[194] [CITE@en[hypertext references and the query component]]
([[Erik van der Poel]] 著, [TIME[2009-07-23 02:43:43 +09:00]] 版)
<http://lists.w3.org/Archives/Public/public-iri/2009Jul/0008.html>

[FIG[
[REFS[
- [209] [CITE@en-us[Media Fragments URI 1.0 (basic)]] ([TIME[2012-09-27 23:08:40 +09:00]] 版) <http://www.w3.org/TR/2012/REC-media-frags-20120925/#standardisation-terminology>
]REFS]

>URI query: The query component is indicated by the first question mark ("?") character and terminated by a number sign ("#") character or by the end of the URI.
]FIG]

[18] [[HTTP]] 上で動作するプロトコルである [[IPP]] の [CODE(URI)@en[[[ipp:]]]]
[[URL]] は、[CODE(URI)@en[[[http:]]]] の [[URL scheme]] を変えたものとして規定されており、
[[query]] について特別な規定はありませんでした。後に [[IPP]] over [[HTTPS]]
のために規定された [CODE(URI)@en[[[ipps:]]]] は [CODE(URI)@en[[[https:]]]]
の [[URL scheme]] を変えたものにあたりますが、 [[query]] は一貫性のために認めるものの、
[[鯖]]の実装依存であることから[[クライアント]]は指定する[['''べきではない''']]
[SRC[>>19]] とされています。

[REFS[
- [19] [CITE@en[RFC 7472 - Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme]] ([TIME[2015-03-04 12:23:14 +09:00]] 版) <https://tools.ietf.org/html/rfc7472#section-4.2>
]REFS]

*

@@
[72] 
[FIG(short list)[
- [CODE[__amp_source_origin]]
- [CODE[_charset_]]
- [CODE[guid]]
- [CODE[ie][ie=]]
- [CODE[utm_source]]

]FIG]

* 演算

[62] [[フォームの提出]]では、 [[URL記録]]の[F[クエリー][URL query]]全体を置き換える操作が行われることがあります。

[63] [[OAuth 1.0]] の[[要求引数]]を[F[クエリー][URL query]]とする場合、
[F[クエリー][URL query]]の末尾に値を追加する操作が行われます。

[65] [[フォームの提出]]では、 [CODE(URI)@en[mailto:]] [[URL]] の場合、
[F[クエリー][URL query]]の末尾に値を追加する操作が行われます。

* 用法

@@




[79] [[Webアプリケーション]]から読み込む [[JavaScript]] や [[CSS]]
の[[キャッシュ]]の制御のために使われることがあります。

@@

** クライアント側での query の利用

[34] [[Webアプリケーション]]は、 [[クライアント]]側で動作する [[JavaScript]]
の処理により、 [[URL query]] が指定されていればその値を解釈し、
その結果に基づき動作を変化させることがあります。

;; [35] [[素片識別子]]もそのように使われることがあり、一般的にはそちらが好ましいと考えられています。
しかし、[[サーバー側]]と[[クライアント側]]で協調して処理したい場合など、
[[query]] を使う方が好ましい状況もあります。

** 第三者による query の利用

[24] 本来 [[query]] の利用方法は[[著者]]の管理下にあるものですが
(もちろん任意の[[利用者]]がどのような [[query]] を使って[[要求]]を送信するかまでは制御できませんが、
本来なら想定外の [[query]] を含む場合は何も考えずに拒絶できるはずです)、
実際には第三者が query を勝手に利用することがあります。

[30] [[著者]] (や[[サーバー]]・[[Webサービス]]の開発者) は、実用上、 [[query]]
を次のように扱うべきです。
[FIG(list)[
- [31] [CODE(MIME)@en[[[application/x-www-form-urlencoded]]]] と矛盾しないように解釈するべきです。
- [32] 未知の[[引数]]は無視するべきで、その[[引数]]の存在によりエラーとなったり、
異なる[[Webページ]]を返したりするべきではありません。
- [33] [[query]] をまったく使わない場合、 [[query]] があってもすべて黙って無視するべきです。
]FIG]

*** アクセス元明示のための用法

[26] [[リンク]]する時に、[[リンク元]]の [[Webサイト]]がどこであるか示すことを目的に[[リンク先]]の [[URL]] 
に何らかの query の値を付与するものがあります。

[EG[
[27] 例えば [[SNS]] は、[[利用者]]が [[URL]] を投稿した時に、 [CODE[?from=snsname]]
のような [[query]] を自動的に付加するかもしれません。
]EG]

[EG[
[28] 例えば[[広告配信]]システムは、出稿者の指定した [[URL]] 
に広告配信に関する必要な情報を [[query]] として付加するかもしれません。
]EG]

*** 既読管理のための用法

[23] [[アンテナ]]は、[[リンク先]]の [[URL]] に [[URL query]] として更新(検知)日付などの値
([DFN[朝日奈クエリ]])
を付け足すことがありました。
これと [[Webブラウザー]]が[[既読リンク]] ([CODE(CSS)@en[[[:visited]]]]) と[[未読リンク]]
([CODE(CSS)@en[[[:link]]]]) で色を変えるなどして表示することにより、
更新後に当該 [[URL]] を表示したかどうかを [[Webブラウザー]]に管理させることができます。

[25] 本来[[サーバー]]の管理下にある [[query]] を第三者である[[アンテナ]]が勝手に使うため、
[[サーバー]]の処理に悪影響を及ぼすおそれがあります。そうでなくても[[サーバー]]の[[アクセスログ]]に[[著者]]の意図せぬ
[[query]] の記録が残るため、不審に思われる可能性があります。
そのため[[素片識別子]]を使うのがより良い方法と考えられていました。
ただし [[IE]] は[[素片識別子]]を除いた部分で既読管理していたため、
[[IE]] で意図通り動作させるためには [[query]] を使うのもやむを得ないと考えられていました。

[EG[
[29] 例えば [CODE[http://www.example.com/]] が 2000年1月2日に更新されていた場合、
[CODE[http://www.example.com/?20000102]] のような [[URL]] が示されるかもしれません。
]EG]

[105] [[素片識別子]]方式に対する利点として、 [[query]]
にすることで[[キャッシュ]]を回避できる (ので最新版を見られる)
というのもあったらしい。

[104] [CITE[ねこめしにっき(2004年6月)]], [TIME[2006-01-05T18:51:36.000Z]], [TIME[2022-06-14T09:38:59.687Z]] <http://www.remus.dti.ne.jp/~a-satomi/nikki/2004/06.html>

* [CODE(DOMi)@en[Location]] インターフェイス [CODE(DOMa)@en[search]] 属性

** 性質

[57] この[[属性]]は、 [CODE(xattr IDL)@en[Unforgeable]] です [SRC[>>36]]。

** 取得器

[37] [CODE(JS)@en[location.search]] の[[取得器]]は、次のようにしなければ[MUST[なりません]]
[SRC[>>36]]。

[FIG(steps)[
= [38] [[文脈オブジェクト]]の[F[[[関係する[CODE(DOMi)@en[Document]]]]]]の[F[起源][文書の起源]]と[[入口設定群オブジェクト]]の[F[起源]]が[[同じ起源ドメイン]]でなければ、
== [39] [CODE(DOMe)@en[SecurityError]] [[例外]]を[[投げ]]、ここで停止します。
= [40] [VAR[URL]]を、[[文脈オブジェクト]]の[F[URL][Location (DOM)]] に設定します。
= [41] [VAR[URL]] の[F[query]]が [[null]] か[[空文字列]]なら、
== [42] [[空文字列]]を返します。
= [43] それ以外なら、
== [44] [CODE[?]] と [VAR[URL]] の [F[query]] を連結したものを返します。
]FIG]

** 設定器

[45] [CODE(JS)@en[location.search]] の[[設定器]]は、次のようにしなければ[MUST[なりません]]
[SRC[>>36]]。

[FIG(steps)[
= [58] [VAR[入力]]を、与えられた値を [CODE(IDL)@en[USVString]] として解釈した結果に設定します。
= [46] [[文脈オブジェクト]]の[F[[[関係する[CODE(DOMi)@en[Document]]]]]]の[F[起源][文書の起源]]と[[入口設定群オブジェクト]]の[F[起源]]が[[同じ起源ドメイン]]でなければ、
== [47] [CODE(DOMe)@en[SecurityError]] [[例外]]を[[投げ]]、ここで停止します。
= [48] [VAR[複製]]を、[[文脈オブジェクト]]の[F[URL][Location (DOM)]] に設定します。
= [49] [VAR[入力]]が[[空文字列]]なら、
== [50] [VAR[複製]]の[F[query]]を、 [[null]] に設定します。
= [51] それ以外なら、
== [53] [VAR[入力]]の先頭が [CODE[?]] なら、これを削除します。
== [54] [VAR[複製]]の[F[query]]を、[[空文字列]]に設定します。
== [55] [VAR[入力]]に[[基本URL構文解析]]を適用します。
[VAR[URL]] は[VAR[複製]]、[VAR[状態上書き]]は [[query state]] とします。
[VAR[符号化上書き]]は、[[文脈オブジェクト]]の[F[[[関係する[CODE(DOMi)@en[Document]]]]]]の[F[文書の文字符号化]]とします。
= [56] [[文脈オブジェクト]]と [VAR[複製]]について
[[[CODE(DOMi)@en[Location]]-object-setter navigate]] を実行します。
]FIG]

* メタ変数 [CODE(CGI)@en[QUERY_STRING]] (CGI)

[200] [[CGI]] の[[メタ変数]] [DFN[[CODE(CGI)@en[[[QUERY_STRING]]]]]] には[[要求]]された [[URL]]
の [[query]] 部分が含まれます。

** 仕様書

[REFS[
- [202] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) <http://tools.ietf.org/html/rfc3875#section-4.1.7>
]REFS]

** 構文

[201] 構文は次のように定義されています [SRC[>>202]]。
[PRE(ABNF code)[
      QUERY_STRING = query-string
      query-string = *uric
      uric         = [[reserved]] | [[unreserved]] | [[escaped]]
]PRE]

;; [203] [CODE(CGI)@en[[[PATH_INFO]]]] とは違って勝手に[[パーセント復号]]されることはありません。

*** NULL

[204] [[鯖]]はこの値を必ず設定しなければ[['''なりません''']]。 [[URL]] に [[query]]
が含まれていなければ[[空文字列]]としなければ[['''なりません''']]。 [SRC[>>202]]

[205] >>204 の規定は [[CGI]] において一般に[[空文字列]]と値の未設定を区別しないこととどう関係するのか不明瞭です。
この[[メタ変数]]に限って特別扱いしているとも読めますし、 [[query]]
が[[空文字列]]であっても存在しなくても一貫して[[メタ変数]]を設定しないなら良いと解釈できないこともありません。

[196] [[CGI]] の実装では [[Apache]] などは URI が [SAMP(URI)[/foo]] の場合も [SAMP(URI)[/foo?]] の場合も[[メタ変数]] [CODE(CGI)[QUERY_STRING]] は空文字列になりますが、サーバーによっては前者は変数未定義になることもあるようです。

[197] >>196 [NCSA] 的には妥当だけど、 [COAR] 的には不当ですね。

[199] >>196 [[IIS]] と [[iPlanet]] は [CODE(CGI)@en[[[QUERY_STRING]]]]
をその場合設定しないそうです。

** 歴史

[195] [NCSA]:
[FIG[
> The information which follows the ? in the URL which referenced this script. This is the query information. It should not be decoded in any fashion. This variable should always be set when there is query information, regardless of command line decoding. 

そのスクリプトを参照する URL 
中で [CODE(URI)[[[?]]]]
に続く情報です。
これは問い合わせ情報です。
これはどんな形でも復号するべきではありません。
この変数は、問い合わせ情報があるときには常に設定するべきです。
[[命令行]]復号にかかわらずです。
]FIG]

[3] [COAR 03]:
[FIG[
> A URL-encoded string; the <query> part of the Script-URI. (See section 3.2.) 

URL 符号化文字列: [[Script-URI]]
の [CODE[<query>]]
部分です。

>
- QUERY_STRING = query-string
- query-string = *uric
> The URL syntax for a query string is described in section 3 of RFC 2396 [4]. 

問合せ文字列の URL 構文は
[[RFC2396]]の3章で説明されています。

> Servers MUST supply this value to scripts. The QUERY_STRING value is case-sensitive. If the Script-URI does not include a query component, the QUERY_STRING metavariable MUST be defined as an empty string (""). 

サーバーはこの値をスクリプトに供給し'''なければなりません ([[MUST]])'''。
[CODE(CGI)[[[QUERY_STRING]]]]
値は大文字・小文字を区別します。
Script-URI が問合せ部品を含まないときは、
[CODE(CGI)[QUERY_STRING]]
メタ変数は空文字列 ("")
として定義し'''なければなりません ([[MUST]])'''。
]FIG]

** 実装

[198] PHP では (古い書き方では) [CODE(CGI)[QUERY_STRING]] の部分を構文解析して変数名 = 引数名で値に access できますね。 [SAMP(URI)[?foo=bar]] を [SAMP(PHP)[$foo]] とか。

** 関連

[206] [[query]] はこの[[メタ変数]]の他、[[スクリプト命令行]]として[[CGIスクリプト]]に引き渡されることがあります。

* 歴史

[10] '''定義の変遷''':
= [1] [DEL[[CODE(ABNF)@en[[DFN[query]] :=  *( [[uchar]] / [[reserved]] ) ;; [[RFC 1808]]]]]]
= [2] [DEL[[CODE(ABNF)@en[[DFN[query]] := *[[uric]] ;; [[RFC 2396]]]]]]
= [6] [CODE(ABNF)@en[[DFN[query]] := *( pchar / "/" / "?" ) ;; [[RFC 3986]]]]

[7] '''RFC 3986 の定義の詳細''':
[[RFC 3986]] の [CODE(ABNF)@en[[[pchar]]]] は
[CODE(ABNF)@en[[[unreserved]] / [[pct-encoded]] / [[sub-delims]] / ":" / "@"]]
です。すなわち [[URI]] で使える[[文字]]のうち、
[CODE(ABNF)["#" / "[" / "]"]] だけが使えません。
定義としては [[RFC 2396]] と同じです。

[207] [CITE[Form of the GET method used with searches]]
( ([TIME[1993-12-13 15:42:19 +09:00]] 版))
<http://www.w3.org/Protocols/HTTP/Methods/GetSearches.html>

[208] [CITE[Web Application Description Language]]
( ([TIME[2009-09-10 03:59:24 +09:00]] 版))
<http://www.w3.org/Submission/2009/SUBM-wadl-20090831/#x3-130002.6.1>

[210] [CITE[IRC logs: freenode / #whatwg / 20131217]]
( ([TIME[2013-12-19 00:39:12 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131217>

[211] [CITE@en[Bug 23822 – Should the EventSource, Worker, and SharedWorker constructors resolve the URL using utf-8?]]
( ([TIME[2014-09-30 04:36:43 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23822>

[212] [CITE@en[Clean up set the input algorithm now all URLs have a query · 217cf06 · whatwg/url]]
( ([TIME[2014-10-19 00:59:02 +09:00]] 版))
<https://github.com/whatwg/url/commit/217cf06b9d2b7fbbbf65eec9d1ea9fce66fec8bf>

[20] [CITE@en[Do not encode ` in query. Fixes #17. · whatwg/url@f54c44d]]
([TIME[2015-06-11 12:55:39 +09:00]] 版)
<https://github.com/whatwg/url/commit/f54c44d1f790dd2b8913e955ba6d334c6f14a048>

[21] [CITE@en[Bug 26338 – Limit query encoding override to http/https]]
([TIME[2015-06-18 19:14:36 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26338>

[52] [CITE@en[Comment out query/queryAll/Elements for now · whatwg/dom@10b6cf1]]
([TIME[2016-03-30 11:15:27 +09:00]] 版)
<https://github.com/whatwg/dom/commit/10b6cf1ba02806220d5461a3bdb7939728b73635>

[59] [CITE@en[Merge effective script origin into origin · whatwg/html@8a843f2]]
([TIME[2016-03-31 18:10:25 +09:00]] 版)
<https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275>

[61] [CITE@en[Remove isindex handling from application/x-www-form-urlencoded · whatwg/url@c85fb5d]]
([TIME[2016-04-27 16:46:32 +09:00]] 版)
<https://github.com/whatwg/url/commit/c85fb5d527f822e089aecc9207f077c6b886aed5>

[66] [CITE@en[Align with changes in Selectors]]
( ([[annevk]]著, [TIME[2016-06-10 16:44:08 +09:00]]))
<https://github.com/whatwg/dom/commit/1594aa52357371354780750413ad88e9e8a2b56b>

[67] [CITE@en[284474 – Converting to UTF-8 a url with an unescaped non-ASCII chars in the query part leads to an incompatibility with most server-side programs]]
( ([TIME[2016-06-12 00:20:28 +09:00]]))
<https://bugzilla.mozilla.org/show_bug.cgi?id=284474>

[68] [CITE@ja[URL 生成ツール - アナリティクス ヘルプ]]
([TIME[2016-06-28 15:05:49 +09:00]])
<https://support.google.com/analytics/answer/1033867?hl=ja>

[FIG(quote)[
[FIGCAPTION[
[69] [CITE@ja[URL パラメータ ツールでパラメータを分類する - Search Console ヘルプ]]
( ([TIME[2016-09-11 01:29:06 +09:00]]))
<https://support.google.com/webmasters/answer/6080550?hl=ja>
]FIGCAPTION]

> アクティブ パラメータ
> アクティブ パラメータは、ページのコンテンツを変えることができます。たとえば、brand、gender、country、sortorder はアクティブ パラメータです。以下に、アクティブ パラメータによる一般的なコンテンツ変更を示します。
> 並べ替え(例: sort=price_ascending): コンテンツが表示される順番を変更します。
> 絞り込み(例: t-shirt_size=XS): ページのコンテンツをフィルタリングします。
> 特定(例: store=women): ページに表示されるコンテンツを特定します。
> 翻訳(例: lang=fr): コンテンツの翻訳版を表示します。
> ページ指定(例: page=2): 長いリストや記事の特定のページを表示します。なお、直接コンテンツをページ指定することもできます。
> パッシブ パラメータ
> パッシブ URL パラメータは、ユーザーに表示されるコンテンツには影響しません。多くの場合、アクセスやリファラーを追跡する目的で使用しますが、実際のページのコンテンツに影響することはありません。たとえば、次の URL はすべて同じコンテンツを指しています。
> http://www.example.com/products/women/dresses?sessionid=12345
> http://www.example.com/products/women/dresses?sessionid=34567
> http://www.example.com/products/women/dresses?sessionid=34567&source=google.com
> パッシブ パラメータには、sessionid、affiliateid などがあります。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[70] [CITE[Apache Tomcat Configuration Reference (6.0.45) - The HTTP Connector]]
([[Craig R. McClanahan]]著, [TIME[2016-02-11 23:00:17 +09:00]])
<http://tomcat.apache.org/tomcat-6.0-doc/config/http.html>
]FIGCAPTION]

> URIEncoding	
> This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.
> useBodyEncodingForURI	
> This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitly set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false.

]FIG]


[71] [CITE@en[Editorial: give URL syntax components their own terms]]
([[annevk]]著, [TIME[2016-11-01 00:05:41 +09:00]])
<https://github.com/whatwg/url/commit/451696e4297c4c676fae21dbc926aeafb2477e6c>

[FIG(quote)[
[FIGCAPTION[
[73] [CITE[Signature Calculations for the Authorization Header: Transferring Payload in a Single Chunk (AWS Signature Version 4) - Amazon Simple Storage Service]]
([TIME[2017-02-11 04:52:51 +09:00]])
<http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html>
]FIGCAPTION]

> CanonicalQueryString specifies the URI-encoded query string parameters. You URI-encode name and values individually. You must also sort the parameters in the canonical query string alphabetically by key name. The sorting occurs after encoding. 

]FIG]


[FIG(quote)[
[FIGCAPTION[
[74] [CITE@en[Web Annotation Protocol]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/protocol/wd/#h-container-representations>
]FIGCAPTION]

> The IRI of the Container provided in the response should differentiate between whether the pages contain just the IRIs, or the full descriptions of the Annotations. It is recommended that this be done with a query parameter.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[75] [CITE@en[Versioning · API.AI]]
( ([TIME[2017-03-18 12:53:33 +09:00]]))
<https://docs.api.ai/docs/versioning>
]FIGCAPTION]

> All API.AI requests should be made with the versioning v parameter in the URL.
> The approach is similar to the Foursquare versioning policy. So, for example, the query requests should be made to the endpoint /query?v=20150910.
> The v parameter is formatted as YYYYMMDD.
> The parameter indicates that you are ready to handle API version as of the specified date.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[76] [CITE@en[documentation/API.md at master · tootsuite/documentation]]
([TIME[2017-04-14 00:45:39 +09:00]])
<https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md>
]FIGCAPTION]

> When an array parameter is mentioned, the Rails convention of specifying array parameters in query strings is meant. For example, a ruby array like foo = '''['''1, 2, 3''']''' can be encoded in the params as foo'''['''''']'''=1&foo'''['''''']'''=2&foo'''['''''']'''=3. Square brackets can be indexed but can also be empty.

]FIG]


[77] [CITE[java - Tomcat 8 is not able to handle get request with '|' in query parameters? - Stack Overflow]]
( ([TIME[2017-04-19 11:44:22 +09:00]]))
<http://stackoverflow.com/questions/41053653/tomcat-8-is-not-able-to-handle-get-request-with-in-query-parameters>

[78] [CITE@en[RFC 8141 - Uniform Resource Names (URNs)]]
([TIME[2017-05-07 23:08:37 +09:00]])
<https://tools.ietf.org/html/rfc8141#section-2.3>

[FIG(quote)[
[FIGCAPTION[
[80] [CITE[BitBake User Manual]]
([TIME[2017-11-20 17:20:09 +09:00]])
<http://www.yoctoproject.org/docs/2.4/bitbake-user-manual/bitbake-user-manual.html#http-ftp-fetcher>
]FIGCAPTION]

> Because URL parameters are delimited by semi-colons, this can introduce ambiguity when parsing URLs that also contain semi-colons, for example:
>      SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git;a=snapshot;h=a5dd47"
>                 
> Such URLs should should be modified by replacing semi-colons with '&' characters:
>      SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&a=snapshot&h=a5dd47"
>                 
> In most cases this should work. Treating semi-colons and '&' in queries identically is recommended by the World Wide Web Consortium (W3C). Note that due to the nature of the URL, you may have to specify the name of the downloaded file as well:
>      SRC_URI = "http://abc123.org/git/?p=gcc/gcc.git&a=snapshot&h=a5dd47;downloadfilename=myfile.bz2"

]FIG]


[81] [CITE@en[Use the API URL character encoding for XMLHttpRequest]]
([[annevk]]著, [TIME[2017-12-04 22:18:29 +09:00]])
<https://github.com/whatwg/xhr/commit/6f14c60f5ae81381c12ff50f5f6898a1583b570d>

[82] [CITE@en[Use document encoding for URL parser · Issue #159 · whatwg/xhr]]
([TIME[2017-12-08 00:57:47 +09:00]])
<https://github.com/whatwg/xhr/issues/159>

[83] [CITE@en[Use document encoding for URL parser · Issue #159 · whatwg/xhr]]
([TIME[2017-12-08 00:57:47 +09:00]])
<https://github.com/whatwg/xhr/issues/159>

[84] [CITE@en[Use the API URL character encoding for XMLHttpRequest by annevk · Pull Request #172 · whatwg/xhr]]
([TIME[2017-12-08 00:58:27 +09:00]])
<https://github.com/whatwg/xhr/pull/172>

[85] [CITE@en[Meta: remove query/queryAll comments]]
([[annevk]]著, [TIME[2018-03-13 16:08:05 +09:00]])
<https://github.com/whatwg/dom/commit/510fa87968f0db76d7e86e0abb3f32e9ed2ac811>

[86] [CITE@en[Do not throw for query() and queryAll() · Issue #39 · whatwg/dom]]
([TIME[2018-03-15 16:10:59 +09:00]])
<https://github.com/whatwg/dom/issues/39>

[FIG(quote)[
[FIGCAPTION[
[87] [CITE@en[WebSub]]
([TIME[2018-01-23 01:01:39 +09:00]])
<https://w3c.github.io/websub/#subscriber-sends-subscription-request>
]FIGCAPTION]

> Subscribers MAY also include additional HTTP '''['''RFC7230''']''' request parameters, as well as HTTP '''['''RFC7230''']''' Headers if they are required by the hub.
> Hubs MUST ignore additional request parameters they do not understand.

]FIG]


[88] [CITE@en[62273 – Add support for alternate URL specification]]
([TIME[2018-04-12 00:37:23 +09:00]])
<https://bz.apache.org/bugzilla/show_bug.cgi?id=62273>

[89] [CITE@en[Change query state slightly to better deal with non-UTF-8 encodings]]
([[annevk]]著, [TIME[2018-05-09 17:55:15 +09:00]])
<https://github.com/whatwg/url/commit/f0e4390bf882446445e944215524ff3877aac95a>

[90] [CITE@en["html" error mode somewhat incompatible with URLs · Issue #139 · whatwg/encoding]]
([TIME[2018-05-26 00:01:22 +09:00]])
<https://github.com/whatwg/encoding/issues/139>

[91] [CITE@en[Change query state slightly to better deal with non-UTF-8 encodings by annevk · Pull Request #386 · whatwg/url]]
([TIME[2018-05-26 00:02:05 +09:00]])
<https://github.com/whatwg/url/pull/386>

[92] [CITE@en[795733 - '&' and ';' should not be percent-encoded in URL queries - chromium - Monorail]]
([TIME[2018-05-26 00:03:36 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=795733>

[93] [CITE@en[Editorial: avoid setting encoding multiple times]]
([[annevk]]著, [TIME[2018-05-09 17:22:37 +09:00]])
<https://github.com/whatwg/url/commit/b385374e5d1b48f82b8040395786469ae655f435>

[94] [CITE@en[Change query state slightly to better deal with non-UTF-8 encodings by annevk · Pull Request #386 · whatwg/url]]
([TIME[2018-05-26 00:04:26 +09:00]])
<https://github.com/whatwg/url/pull/386>

[95] [CITE@en[Percent-encode ' in queries of URLs with special schemes]]
([[achristensen07]]著, [TIME[2018-06-08 16:46:29 +09:00]])
<https://github.com/whatwg/url/commit/6ef17ebe1220a7e7c0cfff0785017502ee18808b>

[96] [CITE@en[percent-encode ' in queries of URLs with special schemes · Issue #348 · whatwg/url]]
([TIME[2018-06-11 23:47:12 +09:00]])
<https://github.com/whatwg/url/issues/348>

[97] [CITE@en[percent-encode ' in queries of URLs with special schemes by achristensen07 · Pull Request #395 · whatwg/url]]
([TIME[2018-06-11 23:49:06 +09:00]])
<https://github.com/whatwg/url/pull/395>

[98] [CITE@en[Change query state slightly to better deal with non-UTF-8 encodings]]
([[annevk]]著, [TIME[2018-05-09 17:55:15 +09:00]])
<https://github.com/whatwg/url/commit/f0e4390bf882446445e944215524ff3877aac95a>

[99] [CITE@en["html" error mode somewhat incompatible with URLs · Issue #139 · whatwg/encoding]]
([TIME[2019-02-25 17:23:27 +09:00]])
<https://github.com/whatwg/encoding/issues/139>

[100] [CITE@en[Change query state slightly to better deal with non-UTF-8 encodings by annevk · Pull Request #386 · whatwg/url]]
([TIME[2019-02-25 17:30:04 +09:00]])
<https://github.com/whatwg/url/pull/386>

[101] [CITE@en[Editorial: avoid setting encoding multiple times]]
([[annevk]]著, [TIME[2018-05-09 17:22:37 +09:00]])
<https://github.com/whatwg/url/commit/b385374e5d1b48f82b8040395786469ae655f435>

[102] [CITE@en[mod_proxy_balancer - Apache HTTP Server Version 2.4]]
([TIME[2020-07-28T12:39:54.000Z]], [TIME[2020-10-01T02:05:57.081Z]])
<https://httpd.apache.org/docs/current/en/mod/mod_proxy_balancer.html#stickyness_implementation>

[103] [CITE@en[Command-Line Interface — Streamlink 1.6.0 documentation]]
([TIME[2020-09-30T20:32:48.000Z]], [TIME[2020-10-01T07:49:47.994Z]])
<https://streamlink.github.io/cli.html#cmdoption-http-query-param>