如何制作PHP CORS请求?

时间:2016-10-20 09:09:15

标签: php curl cors

我正在尝试使用PHP Curl向我们的API网站发出请求。目前,我正在尝试提出一个简单的请求

API站点有一个返回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;
?>

如果我从浏览器访问API站点(api / test_json),我会看到json数据: enter image description here

我在另一个域上有一个试图获取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(假)的回报。我错过了我的代码吗?

1 个答案:

答案 0 :(得分:0)

服务器端调用不受Cross-Origin-Request策略的约束。问题出在API的可用性上。是否需要任何认证?可能当您从浏览器请求它时,您有一个会话cookie。

简化您的代码只需file_get_contents("http://ourapi.com/test_json/");启用所有错误显示,并查看是否有任何错误。