Angular sets the X-XSRF-TOKEN
header to the value of the XSRF-TOKEN
cookie:Warum sendet AngularJS den X-XSRF-TOKEN-Header als JSON-String?
var xsrfValue = isSameDomain(config.url, $browser.url())
? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]
: undefined;
if (xsrfValue) {
headers[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
}
Aber wenn man die XSRF-TOKEN
Cookie setzt mit $cookieStore
(für Rails Integration, zum Beispiel):
$cookieStore.put("XSRF-TOKEN", "my_token");
the cookie is stored as JSON string:
put: function(key, value) {
$cookies[key] = angular.toJson(value);
}
Dies bedeutet, dass der Header wird haben Sie die zusätzlichen Anführungszeichen:
X-XSRF-TOKEN "my_token"
Warum Angular nicht fromJson()
nicht nennen, wenn es den Wert des Header setzt, so dass der Kopf wird wie folgt aussehen:
X-XSRF-TOKEN my_token
?
Das würde uns davor bewahren, die zusätzlichen doppelten Anführungszeichen auf der Serverseite zu entfernen.
Fehle ich etwas offensichtlich hier?
Hinweis: Ich bin nicht auf der Suche nach Umgehungslösungen. Ich versuche zu verstehen, ob dieses Verhalten das beabsichtigte Verhalten ist, und wenn ja, was ist der Grund dafür?
Ich weiß nicht, ob es das gewünschte Verhalten, aber es kann eine haben Sehr wünschenswerte Nebenwirkung der Verhinderung, dass das XSRF-Token erkannt wird, wenn es als Cookie empfangen wird. Schließlich arbeitet CSRF speziell, weil Browser ihre Cookies mit allen Anfragen senden, so dass ein Token, der in einem Cookie liegt, das nicht richtig gelesen werden kann, helfen würde, eine versehentliche Untergrabung des Schutzes zu verhindern. – atk