いくつかの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コールが拒否されるのか理解できません。アプリケーションが同じポートにないということは関連していますか?事前に
感謝:)
を使用してみてください、あなたはこの問題を解決することがありますか?もしそうなら、これを修正するのを手伝ってください。 – Gopinath
私にとっても同じ問題です。 –