0
我的后端发送的csrf cookie似乎被浏览器忽略。忽略Set-Cookie标头
的请求被经由角(2)从http://localhost.mydomain.com:4200制成像这样:
get() {
let headers = new Headers({
'Content-Type' : 'application/json',
'withCredentials' : true
});
let options = new RequestOptions({headers : headers});
return this.http.post('https://api.mydomain.com', {
o : 'csrf',
m : 'get',
p : {}
}, options)
.map((res: Response) => {
console.log('response received: ', res)
})
.catch((err: any) => {
console.log('error received: ', err);
return Observable.throw(err);
});
}
该请求正在由AWS API网关/λ接收运行快速4.x和发送回as:
res.cookie('csrf', token, {domain : '.mydomain.com'});
在xhr响应中设置cookie应该没问题。因为请求和响应都是mydomain.com的子域名,所以我不应该需要withCredentials选项(尽管如图所示,我试着发送它)。收到的响应和标题在那里。这只是没有设置。
它在Chrome,Firefox和IE浏览器被忽略,所以我敢肯定,问题是我缺少明显的东西:)
请注意,不同的子域被浏览器视为交叉源,因此您需要withCredentials来处理所有对api的请求。 – charlietfl
除了@charlietfl(正确)指出的内容外,'withCredentials'不是头,而是[XMLHttpRequest'的属性](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)。 – robertklep
D'oh!就是这样。谢谢!! –