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!就是這樣。謝謝!! –