のcURLでエラーコード28を取得する - 私は置けば、私はこれが解決されている
カールPHPを/使用してリモートサーバーからデータを取得しようとしていますTHIS POST
の終わりにANSWERを参照してくださいブラウザにURLを入力すると、データが正しく返されます。
しかし、私はPHP /それcURLのであれば、単にタイムアウトする(エラーコード28)にアクセスしようとします。
$json = curl($jsonurl, $realm['intRealmID'], $realm['strRealmServer']);
function curl($url, $realm, $realmServer){
$header = array();
$header[] = 'Host: realm'.strval($realm).'.'.$realmServer.'.castle.wonderhill.com';
$header[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
$header[] = 'Accept-Language: en-us,en;q=0.5';
$header[] = 'Accept-Encoding: gzip,deflate';
$header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
$header[] = 'Connection: keep-alive';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
return curl_exec($ch);
curl_close($ch);
}それはcURLを介して、ブラウザからの作品ではなく、なぜ
誰もが任意のアイデアがありますか?ありがとう
追加情報 上記のURLではcURLが機能していませんが、その下のURLはうまく動作します。唯一の違いは、データが要求されているサーバーです。データ自体とPOSTは同じです。
最後に戻ってこれに対する答え
とリファラが問題であることがわかりました。サーバーは要求ヘッダーにリファラーがないと予想していました。それが要求されたとき、要求はブロックされました。その動作は、当時はすべてのサーバーで一貫していなかったかもしれませんが、今はそれです。リクエストヘッダーからリファラーを削除し、他のものをすべて同じものにしておくようになりました。
ユーザーIDが2つのURLで異なる理由はありますか?これは、各サーバーごとに1つあるためですか?ユーザーIDは通常、1つのサービスで共通であるため、これは珍しいことです – Ryan
リファラーが問題であることがわかりました。私はOPを更新しました。 – runey71