Angular sets the X-XSRF-TOKEN
header to the value of the XSRF-TOKEN
cookie:Perché AngularJS invia l'intestazione X-XSRF-TOKEN come stringa JSON?
var xsrfValue = isSameDomain(config.url, $browser.url())
? $browser.cookies()[config.xsrfCookieName || defaults.xsrfCookieName]
: undefined;
if (xsrfValue) {
headers[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
}
Ma, se si imposta il cookie XSRF-TOKEN
usando $cookieStore
(per rotaie integrazione, per esempio):
$cookieStore.put("XSRF-TOKEN", "my_token");
the cookie is stored as JSON string:
put: function(key, value) {
$cookies[key] = angular.toJson(value);
}
Ciò significa che l'header sarà avere le doppie virgolette supplementari:
X-XSRF-TOKEN "my_token"
Perché angolare non chiamare fromJson()
quando si imposta il valore dell'intestazione in modo che l'intestazione sarà simile a questa:
X-XSRF-TOKEN my_token
?
Questo ci salverebbe dalla rimozione delle virgolette doppie aggiuntive sul lato server.
Mi manca qualcosa di ovvio qui?
Nota: Non sto cercando soluzioni alternative. Sto cercando di capire se questo comportamento è il comportamento previsto, e se sì, qual è la logica?
Non so se è il comportamento previsto, ma può avere un effetto collaterale molto desiderabile di impedire che il token XSRF venga riconosciuto quando ricevuto come cookie. Dopotutto, CSRF funziona in modo specifico perché i browser inviano i loro cookie con tutte le richieste, quindi un token posizionato in un cookie che non può essere letto correttamente potrebbe aiutare a prevenire il danneggiamento accidentale della protezione. – atk