[PHP-users 1958] Re: WEBサーバーのレスポンスを得る
まつなみ
php-users@php.gr.jp
Mon, 10 Sep 2001 02:46:01 +0900
こんばんは松並です。
> いくつかのURLについては、IEでそのURLを入力すると表示されるにもかかわらず、
> PHPで取り出したレスポンスは 404 not fount となってしまいます。試しにtelnetで
お役に立つ情報かどうか分かりませんが、思いついたことを3点。
(1) HEADではなくGETではダメでしょうか?
(2) リクエストにIEと同じヘッダ情報が必要とか?
(3) バーチャルドメインサーバかも? ←これが可能性大!?
(1)は、単純にHEADを嫌がる管理者が設定しているサーバかもしれない、
ということですけど、まず、これはないでしょうね。
(2)は、サーバがUser-Agent:などを見ているかもしれない、
ということですけど、IEだと以下のようなヘッダ情報をサーバーに送ってきます。
※適当に改行してます。
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Host: 127.0.0.1
Connection: Keep-Alive
(3)は、サーバが複数ドメインのWebサイトを提供しているかも?
というもので、1つのIPアドレスの1つのサーバに複数ドメインで
別々のWebサーバを動かしているように見せているサーバかも?というものです。
Webサーバは、クライアントがどのドメインのページを要求しているのか?
を判断するために、リクエスト中のHost:を見ます。
例えばhttp://www.php.gr.jp/を見ると、ブラウザは下記のヘッダを送ります。
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/vnd.ms-excel,
application/msword, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Host: www.php.gr.jp
Connection: Keep-Alive
よって、HEADだけでなくって、Host:も加えてみてはいかがでしょうか?
そうそう、Host:をつけるときは、HTTP/1.1です。
----
HEAD /index.html HTTP/1.1
Host: www.target.ne.jp
----
といった感じでしょうか?とりあえずtelnetで試してみてから
プログラムするとよいかと思います。
間違ってたら済みません。
--
まつなみ <mat@abelia.ocn.ne.jp>
http://putyou.matwerks.com/