Laravel API 调用失败。 PostMan 使用 Basic Auth 覆盖 Authorization 标头
Posted
技术标签:
【中文标题】Laravel API 调用失败。 PostMan 使用 Basic Auth 覆盖 Authorization 标头【英文标题】:Laravel API call failed. PostMan overrides Authorization header with Basic Auth 【发布时间】:2017-09-05 05:18:47 【问题描述】:您好,我正在尝试从 Postman 调用 API。 使用的框架是:Laravel
网站具有浏览器身份验证(使用 .htacess) 并且 API 有用户认证(Laravel Passport)(用户必须登录)
现在,
我需要调用一个 API 并包含两个标头,即
我添加了带有用户名/密码的基本身份验证作为浏览器凭据我在标题中添加了基本身份验证:用户名/密码
授权:承载 oauthtoken
(其中 oauthtoken 是从 API 调用 https://servername/auth 和基本身份验证中检索到的密钥:用户名/密码)
现在当我发送 API 调用时,
授权标头更改为:
授权:基本 some_key
因此我得到未经授权的回应。 有什么方法可以将浏览器凭据和用户身份验证标头一起发送吗?
【问题讨论】:
【参考方案1】:您在身份验证后检索到的 OAuth 令牌与 Postman 为基本身份验证附加的令牌不同。
如果您希望在请求中使用您的 OAuth 令牌,我建议您查看 Postman 变量并将该令牌存储在其中。
Here is an article that helped me build my Postman collection using JWT
但是里面的一些脚本已经过时了。
我将首先创建一个环境(本地),您可以在其中添加一个密钥来存储值为空的令牌 (oauth_token)。
在 Postman 中的 auth 端点中,您可以检查 Tests 选项卡,您可以在其中放置脚本以更新 oauth 令牌:
pm.test("Logged in successfully", function ()
var jsonData = pm.response.json();
pm.environment.set('oauth_token', jsonData.token);
);
在此之后,您可以将值为 oauth_token 的授权承载添加到使用 OAuth 令牌的端点。
如果您想了解有关 Postman 变量的更多信息,这是一篇很棒的帖子 variables
回顾一下:
-
将用户名和密码发送到身份验证端点
将 oauth 令牌存储在步骤 1 返回的 Postman 变量中
使用 VARIABLE_NAME 表示法将您的新令牌用作 Postman 变量
【讨论】:
【参考方案2】:我建议使用Guzzle Library
$http = new \GuzzleHttp\Client;
$response = $http->request('POST', 'http://quotible.web3box.com/oauth/token', [
'headers' => [
//you headers here
],
'form_params'=>[
//your browser based parameters here
]
]);
【讨论】:
以上是关于Laravel API 调用失败。 PostMan 使用 Basic Auth 覆盖 Authorization 标头的主要内容,如果未能解决你的问题,请参考以下文章
Axios CORS/Preflight 因 Laravel 5.4 API 调用而失败
对 API 的请求在 Postman 中有效,但在我尝试使用 laravel/guzzle 时无效