[2] [[CGI]] では、[[システム]]によっては[[CGIスクリプト]]の[[引数]]として特定の [CODE(CGI)@en[[[QUERY_STRING]]]] を構文解析したものを渡すことになっています。 * 仕様書 [REFS[ - [3] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) ]REFS] * 処理モデル [4] [[HTTP]] の [CODE(HTTP)@en[[[GET]]]] や [CODE(HTTP)@en[[[HEAD]]]] の[[要求]]であって、 [[URL]] の [[query]] が[[パーセント符号化]]されてい''ない'' [CODE(URI)[[[=]]]] を含んでい''ない''場合、この機能が有効になります。 [SRC[>>3]] [5] [[鯖]]は [[query]] を次の[[生成規則]]に従うものとして構文解析する[['''べきです''']] [SRC[>>3]]。 [PRE(ABNF code)[ search-string = search-word *( "+" search-word ) search-word = 1*schar schar = unreserved | escaped | xreserved xreserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "," | "$" ]PRE] ;; [6] これに適合しない場合どうするべきかは明記されていません。 [7] >>5 によって構文解析した後、各 [CODE(ABNF)[search-word]] を[[パーセント復号]]し、 必要があれば[[システム定義]]の方法で符号化し、[[命令行]]の[[引数]]として使います。 [SRC[>>3]] [8] この[[引数]]リストの一部または全部を構成できないときは[[命令行]]の引数をまったく生成しては[['''なりません''']]。 例えば[[引数]]の数が[[OS]]の制限を超えたとか、[[引数]]として表現できない語が存在するとかです。 [SRC[>>3]] [9] [[CGIスクリプト]]は [CODE(CGI)@en[[[QUERY_STRING]]]] が [CODE(URI)[[[=]]]] を含むかどうか検査し、含む場合は[[命令行]]を使わない[['''べきです''']]。 [SRC[>>3]] ;; [10] そもそも常に [CODE(CGI)@en[[[QUERY_STRING]]]] を使えば良い気がしますが・・・。 * SIP CGI の場合 [1] [[SIP]] CGI では、命令行[[引数]]は使用する'''べきではない ([[SHOULDNOT]])''' とされています。 [RFC 3050 5.4] * 関連 [5] この機能は [CODE(HTMLe)@en[[[isindex]]]] [[要素]]による問い合わせを処理することを想定していました。 [CODE(HTMLe)@en[[[isindex]]]] [[要素]]が使われなくなった現在、この機能も使われることは極めて稀です。 [6] [[CGI]] から派生した仕様の類ではこれに相当する機能は存在しないのが普通です。