小编Mar*_*o P的帖子

http响应中缺少Angular2 JWT Authorization标头(已添加CORS支持)

我正在尝试使用JWT(Json Web Token)进行授权.在前端我在后端Spring REST api上使用Angular2.我在后端添加了CORS过滤器.

在http请求中,我发送用户名和密码,并在响应的"授权"标题中期望令牌.当我使用Postman时,一切正常,我收到所有标题,包括'授权'.

此外,当我在Chrome控制台中记录流量时(在通过表单进行用户登录时)"响应"中存在"授权"标题,因此很明显它会返回到浏览器.但是当我在我的角度应用程序中列出标题时,数组中只有几个标题:

   // auth.service.ts

   login(username, password): Observable<boolean> {

    // call remote service to authenticate user        
     return this.http.post(this.authUrl, JSON.stringify({ username: username, password: password }))
        .map((response: Response) => {

            console.log("Authorization header: " + response.headers.get('Authorization'));
            console.log("all headers: " + response.headers.keys());

            // TODO - login successful if there's a jwt token in the response

        });     
} 
Run Code Online (Sandbox Code Playgroud)

这两个控制台输出的结果是:

 Authorization header: null 

 all headers: Pragma,Cache-Control,Expires
Run Code Online (Sandbox Code Playgroud)

以下是Google Chrome控制台的屏幕截图,您可以在其中看到客户端上存在所有需要的标头:

Chrome控制台

服务器端令牌生成(Spring Boot):

public void addAuthentication(HttpServletResponse response, String username) throws UnsupportedEncodingException {
    // Token generation …
Run Code Online (Sandbox Code Playgroud)

spring http http-headers cors angular

1
推荐指数
1
解决办法
1667
查看次数

标签 统计

angular ×1

cors ×1

http ×1

http-headers ×1

spring ×1