PHP専門のQ&Aサイト SUKEGRA

悩めるプログラマーを「ッターン!」と助太刀!

curl_initでGoogleのhttpsサイトにアクセスすると405 method not allowedが返ってくる


投稿者:匿名 投稿日時: 2015年6月26日
カテゴリー:
構文・記述方法について
タグ:なし

ページが利用可能か調べるために以下のようなコードを作成しました
普通のページでは動作していたんですが、タイトルのようにhttpsページで405エラーとなります。

$ch = curl_init($value);
curl_setopt($ch, CURLOPT_HEADER,         TRUE); // ヘッダーあり
curl_setopt($ch, CURLOPT_NOBODY,         TRUE); // 本文なし(有効にするとGoogleのhttpsのページで405 method not allowedになる)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // 返答はテキストで
curl_setopt($ch, CURLOPT_TIMEOUT, 2); // タイムアウト
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); //リダイレクト先まで取得
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

$res = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == "200") {
	return true;
}

メソッドがどうしたというエラーなのでCURLOPT_PROTOCOLSでGETのみにしたりPOSTのみにしたがそれも効果ありませんでした。

何が原因でしょうか?


0 支持

ログインまたはユーザー登録してから回答してください。

回答 1

投稿者:匿名 投稿日時: 2015年6月26日

サイトによってはセキュリティ対策でCURLOPT_NOBODYがあると異常なアクセスとして405エラーを返すことがあります。
サイトの動作確認だけだとCURLOPT_NOBODYとしたくなりますが、削除してみてください。
他にもセキュリティ対策でユーザーエージェントをバリデーションするサイトもあります。

最近ではDOS攻撃対策でpingすら受け付けないサーバも多いので気をつけてください。

...