了解 JWT 和 HTTP 授权标头? (客户端:Angular,服务器:php)
Posted
技术标签:
【中文标题】了解 JWT 和 HTTP 授权标头? (客户端:Angular,服务器:php)【英文标题】:Understanding JWT and HTTP Authorization header? (client: Angular, server: php) 【发布时间】:2016-05-09 18:29:55 【问题描述】:我的 Angular 应用程序使用 HTTP Post 将登录凭据发送到我的 php 服务器。我收到了信用并很好地创建了我的 JWT 令牌。我可以在响应正文中发回 JWT 令牌,将其保存在客户端并使用它为所有后续客户端请求创建授权标头。没关系。
我想要做的是将新创建的 JWT 令牌在 Authorization 标头中发送回客户端,并让我的客户端从标头而不是正文中保存它。这样我就可以根据需要刷新我的令牌,并且它可以在客户端无缝。
四处搜索,似乎在向服务器发送请求到时设置了授权标头。在 php 中有 curl 函数,但我不确定这是否是正确的方向。
是否可以为 Http Post 响应创建授权标头?
【问题讨论】:
您可以创建任何您想要的标题。最好选择你自己的,比如“X-Token-Renewal”,因为授权已经有一个很好理解的含义,而以新的方式使用它会让人困惑。 谢谢蒂洛,你是对的! 【参考方案1】:Thilo 的评论是正确的。更重要的是,在 php 中,你可以通过简单地使用“header”函数来创建任何你想要的响应头:
<?php
... POST api, generate $token, etc...
header('MyCustomHeader: Bearer'.$token);
...
echo $http_body_response
?>
我的问题是,在 Chrome 中,我在控制台响应中寻找我的标题,而我本应该在“网络”选项卡下查看。网络选项卡显示附加到 http 响应的所有标头。
注意:我使用的是 angular2-beta,如果我添加另一个暴露它的响应标头,我只能在 Angular2 中访问我的自定义标头。一旦我这样做了,标题就会显示在控制台中。因此:
<?php
header("Access-Control-Expose-Headers: MyCustomHeader");
... POST api, generate $token, etc...
header('MyCustomHeader: Bearer'.$token);
...
echo $http_body_response
?>
【讨论】:
以上是关于了解 JWT 和 HTTP 授权标头? (客户端:Angular,服务器:php)的主要内容,如果未能解决你的问题,请参考以下文章
spring boot - 假装客户端发送基本授权标头|将 jwt 令牌从一个微服务传递到另一个微服务