AN HTTPD ゲストブック/コメント集(2000年12月12日12:30)


中田昭雄 nakata@st.rim.or.jp 2000/12/16 07:38

えむけいさん、
HTTP の RFC では
Location = "Location" ":" absoluteURI
ですが、
CGI/1.1 の Internet-draft では、
Location = "Location" ":" ( fragment-URI | rel-URL-abs-path )
で、rel-URL-abs-path の場合、HTTPサーバが、
scheme "://" SERVER_NAME ":" SERVER_PORT rel-URL-abs-path
という形の(HTTPの)レスポンスを出せ、となっています(なっていました)。
その SERVER_NAME を AN HTTPD が間違えてしまっているようなのでそれをバグと称しました。


えむけい VYV03354@nifty.ne.jp 2000/12/16 01:14

>1.32f でのとりあえずの回避法は、
>(1)Location: http://localhost/... と、絶対URLになるように CGI を書き換える
>もちろん次のバージョンで直しますが。

 RFC2396的にはLocation:のあとのURIはスキームから始まる絶対URIでなくてはならないのでこれをバグと言い切れるかどうかは微妙です。もちろんAnHTTPDが独自に相対URIにも対応するのはまったく問題ないと思いますが。


ぱけ hasegawa@ylw.mmtr.or.jp 2000/12/15 11:03

中田さん:
さっそくの返信ありがとうございました。
1.32fのバグとのことですが、こちらの設定ミスだったすみません。

中田さんのHttpdは大変気に入っております。
これからもがんばってください。
それでは。


中田昭雄 nakata@st.rim.or.jp 2000/12/12 21:09

ぱけさん、
申し訳ないです、1.32f のバグです。1.32d かそれ以前では大丈夫です。

おそらく Location: ヘッダで相対パスを指定するタイプの CGI だと思います。
AN HTTPD が絶対URLに変換するためにリクエストの Hosts: ヘッダの内容を使うのですが、1.32f ではその Hosts: ヘッダを取り損ねてしまいます。
Hosts: がないとみなすため、代わりにPCに設定されているコンピュータ名を使うのでおかしなことになってしまいます。

1.32f でのとりあえずの回避法は、
(1)Location: http://localhost/... と、絶対URLになるように CGI を書き換える
または、
(2)hosts ファイルで、127.0.0.1 locahost xxxx@xxx と、locahost の別名を xxxx@xxx としておく
のいずれかになります。

もちろん次のバージョンで直しますが。


ぱけ hasegawa@ylw.mmtr.or.jp 2000/12/12 13:51

何度もすみません。
過去ログを見てAnHTTPレジストリDefaultを削除し1.32fを再インストール。
再起動してみました。が、思うように動作しなかったので
再度レジストリを削除し、環境を1.23bへ戻したところ
正常に動作(http://xxx@xxx/~ではなくhttp://localhost/~を見に行く)
するようになりました。

どうもおさわがせしました。
書き忘れていましたが、環境Win98SE+IE5.5+Perl32Winです。


ぱけ hasegawa@ylw.mmtr.or.jp 2000/12/12 12:59

すみません。ホスト名は変わっていませんでした。

Perlスクリプト内のxxx.cgiが、
http://localhost/~xxx/cgi-bin/xxx.cgiではなく、
http://xxxx@xxx/~xxx/cgi-bin/xxx.cgiになってしまうところを直したいです。


ぱけ hasegawa@ylw.mmtr.or.jp 2000/12/12 12:30

こんにちは。AN HTTPは2年くらい使用しています。
ローカルでCGIを動作できるのでとても助かっています。

さて、最近1.32fにしました。更新したのが原因かわかりませんが、
CGI掲示板(http://localhost/~xxx/cgi-bin/xxx.cgi)
アクセス(表示)はできるのですが、投稿ができません。

試行錯誤しているうちホスト名が「xxxx@xxx」となっていることに気づきました。
以前は「localhost」だったので、このホスト名の変更方法を知りたいのでお願いします。

#投稿するCGIプログラムがxxx.cgiを相対指定アドレス呼んでいるのですが、
#http://xxxx@xxx/~xxx/cgi-bin/xxx.cgiを探してしまい、
#ホスト名が違うので見つからないようです。