我想在响应头(Set-Cookie)中获取会话令牌.如何才能访问Response头中的值?
var headers = new Headers();
headers.append('Content-Type', 'application/json');
console.log('url',this.loginUrl)
this.http.post(this.loginUrl,
JSON.stringify({ "username": value.username, "password": value.password }),
{ headers: headers })
.map((res: Response) =>
res.json())
.subscribe((res) => {
console.log("res", res);
this.loading.hide();
if (res.message_code == "SUCCESS") {
this.nav.setRoot(HomePage, {
username: value.username,
});
} else {
let alert = Alert.create({
title: "Sign In Error !",
subTitle: 'Please Check Username or Password.',
buttons: ['Ok']
});
this.nav.present(alert);
}
}, err => {
this.loading.hide();
console.log('error', err);
});
Run Code Online (Sandbox Code Playgroud)
这是我的标题回复
Thi*_*ier 26
问题是您将响应映射到其json内容.可以从响应本身到达标头.所以你需要删除map运算符:
this.http.post(this.loginUrl,
JSON.stringify({ "username": value.username, "password": value.password }),
{ headers: headers })
/*.map((res: Response) => // <--------------
res.json())*/
.subscribe((res) => {
var payload = res.json();
var headers = res.headers;
var setCookieHeader = headers.get('Set-Cookie')
(...)
});
Run Code Online (Sandbox Code Playgroud)
在访问响应头时要小心CORS.看到这个问题:
解决该问题的一种方法是从后端指定要显示的标题中的哪一对{key:value}.
使用java后端,您可以添加以下行:
public void methodJava(HttpServletResponse response){
...
response.addHeader("access-control-expose-headers", "Set-Cookie");
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过这种角度访问此cookie元素
service(){
...
return this.http
.get(<your url here for your backend>)
.map(res => console.log("cookie: " + res.headers.get("Set-Cookie") )
}
Run Code Online (Sandbox Code Playgroud)
这里有更多解释
| 归档时间: |
|
| 查看次数: |
42180 次 |
| 最近记录: |