どるこむ仲間の掲示板! 過去ログ倉庫 LOG:2002/05:
●2002年05月インデックス ●過去ログ検索トップ ■どるこむ仲間の掲示板へ
[215] HTTP/1.1通信@Perl (9 レス)
2002/05/30(Thu) 12:14:01
雷獣王GRIFFON@i1124 さん
Web: (none)
変な質問ですみません.^^;

諸事情で現在 Perl で HTTP クライアント作ってるのですが,HTTP/1.1 で HEAD 情報取得するとき送信しなければならない情報は必要最低限何を送信すればいいのでしょう?
HTTP/1.0 だったら

HEAD http://URL/ HTTP/1.0
User-Agent: Hoge

ですぐに反応が返ってくるのですが,HTTP/1.1 だと

HEAD http://URL/ HTTP/1.0
Host: Hostname
User-Agent: Hoge

で 30秒くらい反応が返ってこないのです.
なにか送信し忘れてる情報でもあるのかなぁ・・・.(==;?

1. チャム&レオ 2002/05/30(Thu) 13:30:45
HEAD /robots.txt HTTP/1.1[CRLF]
host: www.cham-reo.com[CRLF]
[CRLF]
で普通は大丈夫なはずですけどサーバの設定か何かでしょうか?

% telnet hoge.com 80
HEAD /robots.txt HTTP/1.1
host: www.cham-reo.com

でヘッダを受け取っただんまりになり,30秒ほどしたところでもう一度リターン空打ちしてみると 400 Bad Request って.(汗)
# リヴァの apache 1.3.24 でも同じでした.

3. チャム&レオ 2002/05/30(Thu) 14:14:42
う〜ん文字コードが怪しい事になってたりとか?

どうなんでしょうね?
いま Perl で簡単なサンプル作ってみたのですが,HTTP/1.0 だと即答なのに,1.1 になると 一番最後の CRLF を打った後 10秒ほどのタイムラグがあります.
一応 2バイト文字は入ってないので文字コード云々は無いです.

仕様なのかなぁ・・・.

5. チャム&レオ 2002/05/30(Thu) 14:36:31
KeepAliveがタイムアウトにならないとリターンしてないとか?
まあそれにしては中途半端に短い秒数のような気もしますけど

いまローカルマシンで apache の KeepAlive を Off にしてみました.
結果,最後の CRLF で速攻コネクション切れます.
チャム&レオさん当たりです でも景品はありません.(ぉぃ

どうもありがとうございました.(^^;
# リクエストヘッダで KeepAlive 無効にできたか調べてみます〜.

リクエストヘッダで Connection: Close することにより無事速攻切れるようになりました〜.
ちなみに HTTP/1.1 リクエストで鯖の設定が KeepAlive On だった場合は問答無用で次のデータを待つようです.
逆に HTTP/1.0 リクエストで鯖の設定が KeepAlive On になっている場合は,問答無用でけっちんされますね.
HTTP/1.0 で KeepAlive やりたいときはリクエストヘッダで Connection: Keep-Alive を送れば次のデータを待ちます.
んで一番最後に Close して終了.

どうもありがとうございました〜.

8. チャム&レオ 2002/05/31(Fri) 11:40:04
KeepAliveはHTTP/1.1の機能なのでHTTP/1.0では常に無効になるはずのような気も...(^^;;

どうも HTTP/1.0 でも Keep-Alive は使えるようなんです.
http://www.atmarkit.co.jp/fnetwork/rensai/netpro02/netpro01.html
ただ,RFC1945 には載ってないので「できる」という出所が不明です.→この記事
できるからといって使うのは気持ち悪いものですが・・・.


▲ページの先頭へ