我一直收到此错误
警告: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);
答案 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;