我们正面临着一个奇怪的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