【发布时间】:2019-05-14 12:30:52
【问题描述】:
我有 angular 5 应用程序和 .net core 2.0 web api 应用程序托管在 azure 上作为应用程序服务。 应用有如下两个网址。
angularclient.azurewebsites.net
serviceapi.azurewebsites.net
我面临的问题是 Angular 应用程序没有接收到 serviceapi 发送的 .AspNetCore.Antiforgery cookie。 Angular 应用程序生成的 Http 发布请求具有“withCredentials: true”标头。我在服务 API 中定义了 cors 策略,如下所示。
app.UseCors(builder => builder.WithOrigins("angularclient.azurewebsites.net").AllowAnyMethod().AllowAnyHeader());
我已经使用 POSTMAN 发送了一个请求,并测试了服务器是否发送了 cookie。对于 POSTMAN 请求,cookie 正在接收,没有任何问题。 当我在我的测试 IIS 服务器中托管应用程序并检查时。在那个环境应用程序工作正常。帮助我找到解决此问题的方法。
【问题讨论】:
-
感谢您的建议。如您所述,我已经配置了我的 .net 核心应用程序。下面是我的.net核心配置
services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");app.UseAntiforgeryTokenMiddleware("X-XSRF-TOKEN");在应用程序中间件配置如下context.Response.Cookies.Append(requestTokenCookieName, tokens.RequestToken, new CookieOptions() { HttpOnly = false }); -
你能把你的整个
ConfigureServices和Configure方法贴在这里吗?如果太长,隐藏不相关的部分。必须在调用AddMvc之前配置 CORS。 -
啊还有:
context.Response.Cookies.Append..使用这个作为 cookie 名称XSRF-TOKEN。这是 Angular 将查找的默认 cookie 名称,而不是您传递的X-XSRF-TOKEN。
标签: angular azure asp.net-core asp.net-core-webapi angular-fullstack