Laravel中使用Bearer Token获取数据时遭遇401未认证问题求助
问题解决:Laravel Http客户端Bearer Token请求返回401未认证
核心错误原因
你调用Http::get时,错误地将请求头放在了第二个参数位置——Laravel的get方法第二个参数用于传递URL查询字符串参数,请求头并未被正确发送到目标服务,导致服务端无法识别你的Authorization令牌。
正确代码写法
方式一:使用withHeaders方法(推荐)
Route::get('/getdata', function () { $token = 'mybrearere=xxxxxx<example'; $getdata = Http::withHeaders([ 'Authorization' => 'Bearer ' . $token, 'Accept' => 'application/json', ])->get('http://example/api/posts'); return $getdata; });
方式二:将请求头作为第三个参数传递
get方法的第三个参数是请求配置选项,可包含headers:
Route::get('/getdata', function () { $token = 'mybrearere=xxxxxx<example'; $getdata = Http::get('http://example/api/posts', [], [ 'headers' => [ 'Authorization' => 'Bearer ' . $token, 'Accept' => 'application/json', ] ]); return $getdata; });
额外验证步骤
- 确保
$token的值和Postman中使用的完全一致,注意替换代码里的HTML转义字符(比如<要改成实际的<符号) - 可以通过
dump()方法查看请求详情,确认headers是否正确携带:
$response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $token, 'Accept' => 'application/json', ])->get('http://example/api/posts')->dump(); return $response;
内容的提问来源于stack exchange,提问作者A M
相关产品推荐
相关产品推荐

