Wir arbeiten an einem RESTful Webservice mit AngularJS- und Java-Servlets. Wenn sich der Benutzer anmeldet, sendet unser Backend einen "Set-Cookie" -Header an das Frontend. In Angular greifen wir über $cookies
(ngCookie - Modul) auf den Header zu und setzen ihn.
Nachdem der Benutzer angemeldet ist, kann er beispielsweise einige Inhalte löschen. Daher sendet das Frontend eine GET-Anfrage an das Backend. Da wir an verschiedenen Domänen arbeiten, müssen wir einige CORS-Header festlegen, und Angular führt vor der eigentlichen GET-Anforderung eine OPTIONS-Anforderung aus:
OPTIONEN Anfrage:
GET Anfrage
Wir tun dies in Angular über das $ http-Modul, aber es sendet einfach nicht das Cookie, das enthält JSESSIONID
.
Wie kann ich Angular aktivieren, um Cookies zu senden?
quelle
$http.get('something', { withCredentials: true})
tätigte, als würde der Browser die Cookies nicht senden. Die Verwendung des obigen Codes zum HinzufügenwithCredentials
zu den Standardeinstellungen hat jedoch den Trick getan. Ich weiß nicht warum, aber hoffentlich hilft das, wenn jemand anderes auf dieses Problem stößt$http.get("URL", { withCredentials: true }) .success(function(data, status, headers, config) {}) .error(function(data, status, headers, config) {});
Beachten Sie auch Folgendes: Sie müssen Cookies von Drittanbietern aktivieren . Wenn Sie es in Chrome global deaktiviert haben, klicken Sie auf das Symbol "i" links neben dem Domainnamen, dann auf Cookies, dann auf "Blockieren" und entsperren Sie die Zieldomain.
quelle