1

いくつかのWeb APIを備えたASP.NET Coreバックエンドと、別々のサブドメイン(実際には異なるポートを持つローカルホスト上)にAngularJSクライアントがあり、Antiforgeryが機能しないようです。ASP.NET Core AntiforgeryをAngularJSアプリケーションと別のサブドメインで使用するにはどうすればよいですか?

私が取得[ValidateAntiForgeryToken]で保護されたAPIの400不正な要求応答が、これは私のバックエンドのコードです:

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); 
}); 

私が持っている最初の問題は、クッキーが私のAngularJSアプリに設定されていないことです、私がtrueにWithCredentialsを設定することによってそれを解決した:$httpProvider.defaults.withCredentials = true;

第一方がX-XSRF-TOKENヘッダがAngularJSによって自動的に設定されていない、と私はインターセプタを設定することによってそれを解決したことである:config.headers['X-XSRF-TOKEN'] = $cookies.get('XSRF-TOKEN');

今、トークンを受け取って$ httpリクエストで送信できますが、なぜAPIコールが拒否されるのか理解できません。アプリケーションが同じポートにないということは関連していますか?事前に

感謝:)

+0

を使用してみてください、あなたはこの問題を解決することがありますか?もしそうなら、これを修正するのを手伝ってください。 – Gopinath

+0

私にとっても同じ問題です。 –

答えて

0

この

config.headers['XSRF-TOKEN'] = $cookies.get('XSRF-TOKEN'); 
関連する問題