Wenn ich in Angular2 eine Put-Anfrage stelle, erhalte ich den erwarteten Set-Cookie in der Antwort. Mein Browser (versucht sowohl Chrome als auch Firefox) weigert sich jedoch, das Cookie zu setzen.
Wenn ich eine App Angular 1 benutze, die einen Aufruf des Endpunkts same API durchführt, werden die Cookies korrekt gesetzt.
Die Antwortheader sind:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://example.com
Allow:GET, PUT, HEAD, OPTIONS
Content-Type:application/json
Date:Thu, 28 Jan 2016 14:41:38 GMT
P3P:policyref="http://www.example.com/p3p.xml", CP="NON DSP COR CURa TIA"
Server:WSGIServer/0.1 Python/2.7.6
Set-Cookie:sessionid=994wl49qfsizog5bqmt57sgx9q2toa25; expires=Mon, 28-Mar-2016 14:41:37 GMT; Max-Age=5183999; Path=/
Set-Cookie:csrf=u7UQhpAphTsGYKRU6jFlLFt6NoYAhNMS; Domain=api.example.com; expires=Thu, 26-Jan-2017 14:41:38 GMT; Max-Age=31449600; Path=/
Vary:Accept, Cookie
Das Backend ist in Django 1.8 programmiert.
Hat jemand dasselbe erlebt oder hat einen Vorschlag, wie man dieses Problem lösen kann?
Ich bin offenbar ein Problem im Zusammenhang mit CORS. Vielleicht könnten Sie versuchen, das withCredentials
-Attribut festzulegen, wenn Sie die HTTP-Anforderung ausführen.
Diese Antwort könnte Ihnen dabei helfen, herauszufinden, wie das geht, insbesondere die Antwort von Cedric Exbrayat :
Bearbeiten
Sie könnten die BrowserXhr
erweitern:
@Injectable()
export class CustomBrowserXhr extends BrowserXhr {
constructor() {}
build(): any {
let xhr = super.build();
xhr.withCredentials = true;
return <any>(xhr);
}
}
und überschreiben Sie den BrowserXhr
-Provider mit dem erweiterten:
bootstrap(AppComponent, [
HTTP_PROVIDERS,
provide(BrowserXhr, { useClass: CustomBrowserXhr })
]);
Wenn Sie weitere Hinweise zu CORS benötigen, können Sie diesen Link besuchen: http://restlet.com/blog/2015/12/15/understanding-and-using-cors/ .
Ich hoffe, es hilft dir. Thierry
In der Tat ein CORS-Problem . Ab Angular2 RC2 brauchen Sie nur noch
this.http.get('http://my.domain.com/request', { withCredentials: true })
Ich hatte das gleiche Problem, aber für mich hatte der Cookie einen Pfad zu '/ api/order'. Also enthielt nur die Anfrage zu diesem Pfad den Cookie. Ich änderte den Pfad zu '/' und nun ist alles in Ordnung ..