file_get_contents无法使用bearer

时间:2017-07-31 07:12:14

标签: php slim middleware

我一直收到此错误

  

警告:file_get_contents无法打开流:HTTP请求   失败! HTTP / 1.1 401未经授权

代码

$url = BASE_URL . 'api/v1/users';
$options = array('http' => array(
    'method'  => 'GET',
    'header' => 'Authorization: Bearer '.$token
));
$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);

我在api中使用的中间件通过url参数或标头接受授权;

如果我在参数中使用令牌,它可以工作,但无法通过服务器上的标头发送它,导致localhost工作,

请求是通过持票人令牌授权的,我没有任何用户名和密码来授权请求​​,如下所示,我只在我的url参数中使用令牌。

任何想法为什么?如果不改变我的卷曲要求,我该怎么办?

$result = file_get_contents(BASE_URL . 'api/v1/users?authorization='.$token, false);
$response = json_decode($result, true);

4 个答案:

答案 0 :(得分:1)

您可以将标头添加到file_get_contents,它会使用一个名为context的参数,可用于此:

$url = BASE_URL . 'api/v1/users';
$options = array('http' => array(
    'method'  => 'GET',
    'header' => 'Authorization: Bearer '.$token
));
$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);

答案 1 :(得分:1)

我发现它是一个影响标头授权的apache和php服务器配置,我能够使用.htaccess覆盖它

我在.htaccess

中添加了这一行
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

答案 2 :(得分:0)

您的问题可能是您的授权,您是否知道服务器中的授权类型?

可能你的类型必须是cn389ncoiwuencr,从服务器说出来并尝试:

'header' => 'Authorization: Bearer cn389ncoiwuencr '.$token

答案 3 :(得分:-1)

在PHP中不推荐使用file_get_content,您可以使用CURL发出请求

如果您仍然使用file_get_contents

 $opts = array(
                'http'=>array(
                    'method'=>"GET",
                    'header'=>"Content-Type: application/json en\r\n" .
                    "Authorization: Token ".$token."\r\n"
                )
            );

$response = file_get_contents($Base_URL."?format=json", false, stream_context_create($opts));

echo $response;