Ami*_*wat 6 .net c# .net-core angular
我正在使用 Angular10 和 .NET 核心 2.2。我已将 Startup.cs 配置为使用 XSRF-TOKEN 返回响应。后端正在返回它,但 Angular 不会将它传递给浏览器的 cookie。
服务端代码
// on ConfigureServices
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
});
// on Configure
app.Use(next => context =>
{
string path = context.Request.Path.Value;
if (path != null && path.ToLower().Contains("/api"))
{
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions() { HttpOnly = false });
}
return next(context);
});
Run Code Online (Sandbox Code Playgroud)
就我而言,Angular 不添加 XSRF-TOKEN cookie,因为我为客户端和 API 使用不同的域。
要根据 @David 评论解决此问题,我必须添加withCredentials: true到我的请求中
前任:
this._http.get<Array<string>>(`${environment.config.auth.BASE_API_URL}/Product/GetFeature`, { headers, withCredentials: true});
Run Code Online (Sandbox Code Playgroud)
如果您为客户端 Angular 和服务器(在我的例子中是 asp.net core)使用单个相同的域托管,那么您不需要在客户端添加任何配置,除非您的默认 cookie 名称应该是“XSRF-TOKEN”标头名称应为“X-XSRF-TOKEN”。
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |