我們正面臨着一個奇怪的cookie問題。服務器從一個端點返回下面像https://product.example.com/rest/v1/stuff使用iframe時,Set-Cookie似乎會損壞
Set-Cookie: id=c50b72c0-0b3a-11e7-b356-002590812948;Version=1;Comment="ID";Domain=.example.com;Path=/;HttpOnly
一旦做到這一點,我們創建了一個iframe和iframe中的所有請求,預計發送cookie。當瀏覽器的下一個請求(IFRAME REF)的幾件事情之一發生
- 沒有的cookie被髮送
- 的cookie被髮送的ID = 9b639ea0-e800-11e6-b3ee-002590812948
- 餅乾被髮送爲id = 9b639ea0-e800-11e6-b3ee-002590812948; ID = c50b72c0-0b3a-11E7-b356-002590812948
- 餅乾得到爲ID = c50b72c0-0b3a-11E7-b356-002590812948發送
如果第一請求不使用正確的cookie,則下一組可能會發生變化並做不同的事情(加載頁面後約50個HTTP調用,每個做4個列出的狀態之一)
我們看到它發生在Chrome,Safari和Firefox中。
調試:
這可能是一個程序問題,但我們還沒有找到一種方法來調試什麼是設置cookie。是否有任何瀏覽器可以通知我們有關cookie狀態的更改(從http或js)?
的Javascript:
我們使用反應14,這裏是有問題的代碼
進行網絡請求
getUri(id)
.then((uri) => {
self.dispatch(uri.uri);
})
.catch((errorMessage) => {
self.actions.idFailures(errorMessage)
})
這裏是getUri
getUri(id) {
return new Promise(function(resolve, reject) {
let url = 'rest/stuff/' + id;
request
.get(url)
.set('Accept', 'application/json')
.end(function(err, result){
if(err || !result){
reject(Error(err.response.text));
}
else {
resolve(JSON.parse(result.text));
}
});
});
},
設置IFRAME
if(this.state.uri) {
instance = <iframe src={this.state.uri} style={iFrameStyle}> </iframe>;
}
如果您不發佈代碼,您如何指望我們弄清楚您做錯了什麼? – Barmar
我在您發佈的代碼中沒有看到與Cookie相關的任何內容。 – Barmar
http響應是什麼設置Cookie – ekaqu