AN HTTPD ゲストブック/コメント集(2000年8月15日17:16)


中田昭雄 nakata@st.rim.or.jp 2000/08/15 17:16

久里葉甘さん、
実例をみた方がわかりやすいでしょうから、まず オプション/ログで トレースログにチェックを入れてください。

そしてたとえば、cgi/cgisample.html の一番下の、
-----------------------------------------------------------
<FORM METHOD="POST" ACTION="/cgi-bin/input3.bat">
<TEXTAREA NAME="inputtext" ROWS=5 COLS=50></TEXTAREA>
<INPUT TYPE=reset VALUE="クリア">
<INPUT TYPE=submit VALUE="記入したら押してください">
</FORM>
-----------------------------------------------------------
で、TEXTAREA に "久里葉甘"といれて submit すると、
リクエストは、
-----------------------------------------------------------
POST /cgi-bin/input3.bat HTTP/1.0
Referer: http://127.0.0.1/cgi/cgisample.html
Connection: Keep-Alive
User-Agent: Mozilla/4.7 [ja] (Win95; I)
Host: 127.0.0.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: ja,en
Accept-Charset: Shift_JIS,*,utf-8
Content-type: application/x-www-form-urlencoded
Content-length: 30

inputtext=%8Bv%97%A2%97t%8A%C3
-----------------------------------------------------------
となります。
空行の下のリクエストのボディが標準入力としてCGIプロセスに渡されます。
この場合は inputtext 以下の30バイト(Content-length)だけです。
普通は GET の場合の ? 以下のクエリーと同じ内容ですから QUERY_STRING と同じと思ってよいと思います。

ファイルアップロードなどでは Content-type が multipart になりますからちょっと複雑ですが、それも trace.log のリクエストを見ればわかります。
ただしログではバイナリデータは '\0' で出力をやめてしまいますから、テキストデータの方がわかりやすいでしょう。


久里葉甘 kulumi@mutt.freemail.ne.jp 2000/08/15 09:42

突然質問なのですか、dosのperl.exeへ POSTされたデータはどう言う形式で
渡されているのでしょうか?
DOSアセンブラでCGIのコマンド作りたいのですがどう受け取ればいいのか
さっぱり?で、困っております。
やっぱり標準入力のファイルハンドル0で受ければ良いんでしょうか?。
その場合はどう言うフォーマットで渡されてるのか教えていただけませんでしょうか。
また。処理結果の反映はファイルハンドル1でよろしいのでしょうか?。
ぜひお願いいたします。