phpとcurlを使って簡単なHTTPクライアントのようなものを作ろうと思っています。

以下のコード実行すると
Bad Request
Your browser sent a request that this server could not understand.
client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23):/hoge/
のメッセージが表示されます。

HTTP/1.1ではHostフィールドが必須とのことなので
$header = array("Host: www.hogehoge.jp");
で、入力しているつもりなのですが
これでは駄目なのでしょうか。

<?php
$header = array("Host: www.hogehoge.jp");
$ch = curl_init("http://www.hogehoge.jp/hoge/");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_exec($ch);
curl_close($ch);
?>

回答の条件
  • 1人2回まで
  • 登録:2006/09/29 20:50:57
  • 終了:2006/10/02 20:02:00

ベストアンサー

id:takagimasahiro No.2

m-takagi回答回数23ベストアンサー獲得回数22006/10/01 10:37:18

ポイント70pt

# 直接の答えではありません。ごめんなさい。

curl_setopt で CURLOPT_HEADER や CURLOPT_VERBOSE を設定して、実際に送信されているヘッダの内容を確認してみてはいかがでしょうか。実際に送信しているヘッダが確認できれば、次にそれを直接 telnet で実行してみるなどすればヒントが得られるかもしれません。

  • 補足1: 手元の環境で CURLOPT_VERBOSE を指定して試してみたところ、Host: ヘッダを明示的に指定しなくても自動的に送信してくれているようです。ただ、そういう仕様なのかどうかは未確認です。環境に依存するかもしれません
  • 補足2: もし HTTP/1.1 にこだわらないのなら、curl_setopt の CURLOPT_HTTP_VERSION で明示的に HTTP/1.0 を指定することもできます。

その他の回答(1件)

id:takagimasahiro No.2

m-takagi回答回数23ベストアンサー獲得回数22006/10/01 10:37:18ここでベストアンサー

ポイント70pt

# 直接の答えではありません。ごめんなさい。

curl_setopt で CURLOPT_HEADER や CURLOPT_VERBOSE を設定して、実際に送信されているヘッダの内容を確認してみてはいかがでしょうか。実際に送信しているヘッダが確認できれば、次にそれを直接 telnet で実行してみるなどすればヒントが得られるかもしれません。

  • 補足1: 手元の環境で CURLOPT_VERBOSE を指定して試してみたところ、Host: ヘッダを明示的に指定しなくても自動的に送信してくれているようです。ただ、そういう仕様なのかどうかは未確認です。環境に依存するかもしれません
  • 補足2: もし HTTP/1.1 にこだわらないのなら、curl_setopt の CURLOPT_HTTP_VERSION で明示的に HTTP/1.0 を指定することもできます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません