[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/