私はAPIサイトにリクエストするためにPHP Curlを使用しようとしています。現時点では簡単なリクエストをしようとしていますPHP CORSリクエストを作成するにはどうすればよいですか?
APIサイトには、JSON形式のデータを返すディレクトリがあります。スクリプトは以下の通りである:私は私のブラウザからAPIサイト(API/test_json)にアクセスした場合
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
$arr['id'] = '001';
$arr['desc'] = 'Simple JSON output';
$json = json_encode($arr);
echo $json;
?>
私がしようとして別のドメイン上のPHPスクリプトを持っています
<?php
$url = "http://ourapi.com/test_json/";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$str = curl_exec($curl);
curl_close($curl);
var_dump($str);
?>
私が実行すると、私はbool(false)の戻り値を取得します。私のコードで何かを忘れましたか?
URLでsslが使用されていない場合、なぜsslオプションを設定していますか?ちなみに、PHPからapiを呼び出す場合、CORSヘッダーは必要ありません。javascriptからapiを直接呼び出す場合にのみ必要です。 – jeroen
SSLを削除できます。残念ながら、JavaScriptはオプションではありません。 –