如何通过PHP附加授权标头?

时间:2016-09-28 20:11:25

标签: php json

我正在使用PHP通过file_get_contents命令从远程服务器获取JSON。这是我使用的代码片段:

$opts = array(
  'https'=>array(
    'method'=>'GET',
    'header'=>'Accept-language: en\r\n' .
              'Authorization: MAC ["3","ios2.5.0","123","123abc","123=","abc="]\r\n' .
              'User-Agent: abc/1.1.1 iOS/10.0.2 iPhone/iPhone7,1\r\n'
  )
);

$context = stream_context_create($opts);

$file = file_get_contents('https://www.google.com/v11/file?search=ios&with=users%2Cfiles%2Cquestions', false, $context);

echo $file;

我做了一个快速调试:

  1. 使用Postman我能够获得具有相同标题的json文件。
  2. 我从不同的网址尝试了一个不同的json,它可以工作。
  3. 我尝试了一个本地文件,它有效。

1 个答案:

答案 0 :(得分:1)

您必须了解file_get_contents是什么。此命令是在服务器上获取文件的请求,在这种情况下,它请求在服务器上获取https://www.google.com/v11/file/index.html,只需一步即可完成。由于您的网址似乎使用标头来验证您的来源,因此它可能是一个ajax请求,这意味着服务器组件未设置为允许file_get_contents请求的输出,而是他们可能接受cURL请求。

所以你可以使用:

curl_exec()