[2] CGI では、システムによってはCGIスクリプトの引数として特定の
QUERY_STRING
を構文解析したものを渡すことになっています。
[5] 元々この機能は isindex
要素による問い合わせが
URL query として送信されたものを処理することを想定していました。
[15] isindex
要素はフォームの登場により90年代に既に使われなくなり、
までに Webブラウザーおよび仕様書でも完全に廃止されました。
[16] 理論上は isindex
要素以外でも URL query
で同じような形式を採っていればサーバー側の処理に使うことはできるのですが、
あまり一般的ではありません。
[17] 最早誰も CGI の仕様書をメンテナンスしていないため、
かつての規定が依然として形式的に有効ではあるのですが、実際上は誰も使っていない本機能も
isindex
要素と共に廃止されたものとして扱うべきでしょう。
[4] HTTP の GET
や HEAD
の要求であって、
URL の query がパーセント符号化されていない =
を含んでいない場合、この機能が有効になります。 >>3
[5] 鯖は query を次の生成規則に従うものとして構文解析するべきです >>3。
search-string = search-word *( "+" search-word ) search-word = 1*schar schar = unreserved | escaped | xreserved xreserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "," | "$"
[7] >>5 によって構文解析した後、各 search-word
をパーセント復号し、
必要があればシステム定義の方法で符号化し、命令行の引数として使います。
>>3
[8] この引数リストの一部または全部を構成できないときは命令行の引数をまったく生成してはなりません。 例えば引数の数がOSの制限を超えたとか、引数として表現できない語が存在するとかです。 >>3
[9] CGIスクリプトは QUERY_STRING
が =
を含むかどうか検査し、含む場合は命令行を使わないべきです。 >>3
QUERY_STRING
を使えば良い気がしますが・・・。[1] SIP CGI では、命令行引数は使用するべきではない (SHOULDNOT) とされています。 [RFC 3050 5.4]
[13] Unix と POSIX 環境では、命令行は main()
関数の引数
argc
、argv
によりアクセスできます。 Bourne shell
で「活性」な文字は \
でエスケープされます。
>>12
[20] UNIX では、 ps
コマンドなどプロセスの一覧でコマンドライン引数が外部から観測可能です。
第三者がプロセス一覧にアクセス可能な環境では、注意が必要です。
QUERY_STRING
でアクセスできるのですから、 本機能は不要です。