Wir stehen vor einem seltsamen Problem mit Cookies. Der Server gibt die folgenden von einem Endpunkt wie https://product.example.com/rest/v1/stuffSet-Cookie scheint beim Arbeiten mit iframe beschädigt zu werden
Set-Cookie: id=c50b72c0-0b3a-11e7-b356-002590812948;Version=1;Comment="ID";Domain=.example.com;Path=/;HttpOnly
Sobald dies geschehen ist, schaffen wir ein iframe und alle Anfragen in der iframe wird erwartet, dass das Cookie senden. Wenn macht der Browser die nächste Anforderung (iframe ref), eines der wenigen Dinge passiert
- kein Cookie
- Cookie wird als id = 9b639ea0-e800-11e6-b3ee-002590812948
- Cookie gesendet wird wird gesendet als id = 9b639ea0-e800-11e6-b3ee-002590812948; id = c50b72c0-0b3a-11e7-b356-002590812948
- Cookie gesendet wird als id = c50b72c0-0b3a-11e7-b356-002590812948
Wenn die erste Anforderung die richtige Cookie verwenden, der nächste Satz kann variieren und verschiedene Dinge tun (etwa 50 HTTP-Aufrufe nach dem Laden der Seite, wobei jeder einen der 4 aufgeführten Zustände ausführt)
Wir sehen, dass es in Chrome, Safari und Firefox passiert.
Debugging:
Dies ist ein Anwendungsproblem sein kann, aber wir haben noch einen Weg zu finden, zu debuggen, was das Cookie setzt. Gibt es einen Browser, in dem wir über Änderungen am Cookie-Status benachrichtigt werden können (von http oder js)?
Javascript:
Wir 14 verwenden reagieren, hier ist der Code in Frage
Fabrikat Netzwerk Anfrage
getUri(id)
.then((uri) => {
self.dispatch(uri.uri);
})
.catch((errorMessage) => {
self.actions.idFailures(errorMessage)
})
Hier ist 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));
}
});
});
},
Set iframe
if(this.state.uri) {
instance = <iframe src={this.state.uri} style={iFrameStyle}> </iframe>;
}
Wie erwarten Sie, dass wir herausfinden, was Sie falsch machen, wenn Sie keinen Code eingeben? – Barmar
Ich sehe nichts in Bezug auf Cookies in dem von Ihnen geposteten Code. – Barmar
Die HTTP-Antwort legt fest, wie der Cookie gesetzt wird – ekaqu