1

Ich habe ein ASP.NET-Core-Backend mit einigen Web-APIs und einem AngularJS-Client auf separaten Subdomains (eigentlich auf localhost mit verschiedenen Ports), und ich kann nicht scheinen, Antiforgery zu arbeiten.Wie verwendet man ASP.NET Core Antiforgery mit AngularJS App auf separate Subdomain?

ich 400 Bad Anfrage Antwort auf APIs mit [ValidateAntiForgeryToken] geschützt, das ist mein Backend-Code:

services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN"); 

... 

app.Use(next => context => { 
    tokens = antiforgery.GetAndStoreTokens(context); 
    context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, new CookieOptions { HttpOnly = false }); 
    return next(context); 
}); 

erstes Problem, das ich habe ist, dass das Cookie nicht auf meinem AngularJS app gesetzt , ich habe es durch das setzen WithCredentials auf true aufgelöst: $httpProvider.defaults.withCredentials = true;

das zweite ist, dass die X-XSRF-Token-Header nicht automatisch von AngularJS gesetzt ist, und ich habe es durch setzen eines Interceptor gelöst: config.headers['X-XSRF-TOKEN'] = $cookies.get('XSRF-TOKEN');

Jetzt kann ich das Token empfangen und es mit meinen $ http-Anfragen senden, ich verstehe nicht, warum API-Aufrufe abgelehnt werden! Ist es damit verbunden, dass sich die Anwendungen nicht auf demselben Port befinden?

Vielen Dank im Voraus :)

+0

verwenden Sie dieses Problem gelöst haben? Wenn ja, bitte helfen Sie mir, dies zu beheben .. – Gopinath

+0

Das gleiche Problem für mich auch. –

Antwort

0

Versuchen Sie, diese

config.headers['XSRF-TOKEN'] = $cookies.get('XSRF-TOKEN'); 
Verwandte Themen