如何在Angular 5中获得“授权”标题

时间:2018-01-12 18:20:56

标签: angular spring-boot jwt

我有启用Spring-Boot JWT的REST API。身份验证API /登录确实按预期提供所有CORS和AUTH标头。用卷毛和邮差测试。 我的客户端代码在Angular 5中。成功通过身份验证后,我可以看到 -

  1. 所有必需的标题,特别是网络流量中Chrome浏览器工具中的“授权”标题。
  2. 但是,当使用Angular 5 HttpClient访问时,组件/服务中无法访问Header。
  3. 注意:后端端,CORS和允许标头已启用,因此Chrome网络流量正常。

    在POST调用期间在HttpClient中添加了必需的选项。

    {
         responseType: 'text',
         observe: 'response'
    }
    

    尝试了所有可能的responseType。 默认情况下,JSON会抛出Parse Exceptions。 这意味着默认的Spring-Boot JWTS / login API不返回JSON Output但只返回HttpResponse。

    请帮忙......

    Angular Code -

    login(payload: any): Observable < any > {
    
        return this._http.post(this.loginEndPoint, payload, {
            responseType: 'text',
            observe: 'response'
        })
            /* .map((response: HttpResponse<string>) => {
                console.log(response.headers.get('Authorization'));
                return response;
            }); */
            .pipe(
            tap(response => {
                console.log(response.headers.get('Authorization'));
                return response;
            }),
            catchError(this.handleError('getHeroes', []))
            );
    }

2 个答案:

答案 0 :(得分:0)

-Dfile.encoding=UTF8运算符不会在可观察流中发出值。因此,返回其中的内容将不会做任何事情。它用于执行记录等副作用。要使用tap运算符

发出值
map

注意:这只会将标题返回给订阅的组件。

答案 1 :(得分:0)

您应该在后端添加一行: response.addHeader(“ access-control-expose-headers”,“授权”);