我为服务器上部署的所有API配置了身份验证。现在,当我按邮递员到达终点时。它工作正常,接受jwt令牌来访问其他API,但是当我用Angular应用程序访问相同的API时,即使在标题中通过了身份验证后,它仍表示未授权错误。
请帮助我!
代码如下:
createHeader() {
return (this.header = new HttpHeaders({
"Content-Type": "application/json",
Authorization: localStorage.getItem("token")
}));
}
答案 0 :(得分:1)
Postman很有可能在auth令牌中添加了“ Bearer”前缀,这在上面的代码中没有发生。
尝试:
createHeader() {
return (this.header = new HttpHeaders({
"Content-Type": "application/json",
Authorization: `Bearer ${localStorage.getItem("token")}`
}));
}
答案 1 :(得分:0)
实际上,问题与cors有关,cors不允许Angular应用通过亚马逊网关访问任何lambda API。
解决方案:有两种方法,如下所示:
1)您可以在终端上运行以下命令,这将使您点击API网关API:
google-chrome --disable-web-security --user-data-dir="/tmp/chrome_tmp"
2)第二种方法涉及编辑您的serverless.yml文件:
- http:
path: permission/
method: any
cors: true
您必须将cors声明为true。现在的问题是它将做什么?答案如下:
无服务器框架允许您详细配置CORS。 cors:true是以下配置的快捷方式。
cors:
origins:
- '*'
headers:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
allowCredentials: false