[18] いくつかの Webブラウザーなどは、 file:
URL などでローカルファイルを
CGIスクリプトとして実行する機能として CGI/1.1 を実装していました。このような機能はローカルCGI
などと呼ばれています。
[1] w3m は local file (file:
URI であらわされる資源) を HTTP のように CGIスクリプトとして扱う local CGI 機能があります。少々の w3m の動作の取得・制御も可能です。
[2] 安全上の理由から、 local CGI script と認識され得るのは file:///cgi-bin/
以下とかに限られます。 (このディレクトリは仮想で、実体は w3m の設定で指定します。)
[9] Apache などと同じように、メタ変数は環境変数として提供されます。
CGI/1.1 で規定されているほとんどのメタ変数を用意してくれます。独自拡張の REQUEST_URI
にも対応しています。
詳しくはソース (>>8) を見て下さい。
HTTP_*
変数群は、
HTTP_REFERER
以外は用意しないようです。
[10] 注意しておきたい点としては、 REMOTE_ADDR
と REMOTE_HOST
には常に
127.0.0.1
と localhost
が、 SERVER_NAME
と SERVER_PORT
にも常に localhost
と 80
が入るようになっています。 SEFVER_PROTOCOL
も常に HTTP/1.0
です。
最後の2つは local でない CGI を emulate するためでしょうが、
このおかげで local でない CGI と local CGI
を完全に区別する方法はありません。
[11] とはいっても、 local でない CGI と local CGI
を区別するのは簡単です。 SERVER_SOFTWARE
には普段の HTTP 要求で User-Agent
欄に送る値が入っていますから、これが w3m
で始まれば w3m が local CGI 機能を使っていると分かります。
(w3m variant でこの文字列が w3m
で始まらなかったら困るかもしれませんが。)
[14] 変数 LOCAL_COOKIE_FILE
には、
local Cookie に使用できるファイルの名前が入ります。
古い版 (2003年1月くらいの版まで) では、
LOCAL_COOKIE
が使われてました。
こちらの変数にはセッション識別子に使える値が入るみたいです。
[13] w3m 独自の w3m-control
欄が用意されています。
これを使うと任意の機能を実行できます。
README.func
http://cvs.sourceforge.net/viewcvs.py/w3m/w3m/doc-jp/README.func
に機能の一覧があります。
この欄を複数個出力すれば、その順に実行できます。 なお、 local CGI スクリプトからではない通常の HTTP 応答でこの欄は認識されません。されるとしたら危険なことに。。。
[82] Webブラウザーやその拡張機能として URL scheme
cgi:
、cgi+:
といった local CGI
と類似した機能が実装されていることもあります。
[19] Web Forms 2.0 には file:
URL へのフォーム提出を CGI
により処理することに
(参考としてではありますが) 言及がありました。 (現在の HTML Standard にはありません。)
[21] lynx(1) - Linux man page () https://linux.die.net/man/1/lynx
[22] w3m manual (, ) http://w3m.sourceforge.net/MANUAL.ja.html#LocalCGI
2007-03-18 16:03:15 +09:00
版) http://elinks.or.cz/documentation/manual.html#CONFIG-CGI