我有一个验证请求网址的API密钥
如果我这样做
echo file_get_contents('http://myfilelocation.com/?apikey=1234');
结果: this api key is not authorized for this domain
但是,如果我将请求的网址放在具有相同网址的iframe中:
结果: this api key is authorized
显然,我收到请求的JSON返回数据的服务器工作正常,因为iframe正在输出正确的信息。但是,如何验证PHP是否通过正确的域和URL设置发出请求?
使用file_get_contents
我总是回来说API密钥未经授权。但是,我正在从授权域运行php脚本。
答案 0 :(得分:0)
试试这个PHP代码:
<?php
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Host: myfilelocation.com\r\n". // Don't forgot replace with your domain
"Accept-language: en\r\n" .
"User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n"
)
);
$context = stream_context_create($options);
$file = file_get_contents("http://myfilelocation.com/?apikey=1234", false, $context);
?>
答案 1 :(得分:0)
file_get_contents
没有发送任何引荐来源信息,api可能需要它,这可能会对您有所帮助:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://myfilelocation.com/?apikey=1234');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://autorized-domain.here');
$html = curl_exec($ch);
echo $html;
?>