Angular 2/4返回获取响应自定义标头

时间:2017-07-10 17:43:34

标签: angular cors rxjs angular-http

我有一个带有get请求的Angular2 / 4应用程序,该请求的响应标头的键为' X-Auth-Key'。当我调用response.header时,我得到默认的标题,然后我调用response.headers.get(' X-Auth-Token')我得到null。以下是我的代码以及Chrome控制台请求的屏幕截图(var url在别处定义)。

    getToken(id: string, password: string): Observable<User> {
    let headers = new Headers({ 'X-Auth-User': id, 'X-Auth-Key': password });
    return this.http
        .get(url + 'auth', { headers: headers })
        .map(response => {
            let user: User = response.json() as User;

            // store user details and jwt token in local storage to keep user logged in between page refreshes
            localStorage.setItem('currentUser', JSON.stringify({ user: user, token: response.headers.get('X-Auth-Token') }));

            return user;
        })
   }// Get authorization token

enter image description here

我不确定我做错了什么,但感谢您的帮助

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您希望允许请求的前端JavaScript代码访问X-Auth-Key响应标头值,则必须将服务器配置为在其值中发送包含“X-Auth-Key”的Access-Control-Expose-Headers response header

如果响应中不包含Access-Control-Expose-Headers标头的值,则浏览器允许您从Web应用中的客户端JavaScript访问的唯一响应标头为Cache-ControlContent-LanguageContent-TypeExpiresLast-ModifiedPragma

请参阅https://fetch.spec.whatwg.org/#cors-safelisted-response-header-name了解相关规范。