我有一个带有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
我不确定我做错了什么,但感谢您的帮助
谢谢!
答案 0 :(得分:3)
如果您希望允许请求的前端JavaScript代码访问X-Auth-Key
响应标头值,则必须将服务器配置为在其值中发送包含“X-Auth-Key
”的Access-Control-Expose-Headers
response header
如果响应中不包含Access-Control-Expose-Headers
标头的值,则浏览器允许您从Web应用中的客户端JavaScript访问的唯一响应标头为Cache-Control
,
Content-Language
,
Content-Type
,
Expires
,
Last-Modified
和
Pragma
。
请参阅https://fetch.spec.whatwg.org/#cors-safelisted-response-header-name了解相关规范。