来自特定URL的file_get_contents

时间:2014-01-30 01:42:55

标签: php api curl file-get-contents

我有一个验证请求网址的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脚本。

2 个答案:

答案 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;
?>