gpt4 book ai didi

angular - 在 azure 中部署时,未在 cookie 中设置防伪 token

转载 作者:行者123 更新时间:2023-12-03 00:08:10 25 4
gpt4 key购买 nike

我有两个应用程序服务,一个是 Angular 应用程序,另一个是 .NET core 2.0 应用程序。我从后者创建防伪 token ,并附加到每个请求的 header ,以便在前者中将其设置为 cookie。

启动.cs

    public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.HttpOnly = false;
options.Cookie.SameSite = SameSiteMode.None;

});
...

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCookiePolicy(new CookiePolicyOptions
{
MinimumSameSitePolicy = SameSiteMode.None
});

app.UseAntiforgeryTokenMiddleware("X-XSRF-TOKEN");
....

AntiForgeryMiddleware.cs

    public async Task Invoke(HttpContext context, IAntiforgery antiforgery, ILogger<AntiForgeryMiddleware> logger)
{
string path = context.Request.Path.Value;
if (path != null && path.ToLower().Contains("/api/account/authorizeview"))
{
if (httpVerbs.Contains(context.Request.Method, StringComparer.OrdinalIgnoreCase))
{
var tokens = antiforgery.GetAndStoreTokens(context);

context.Response.Cookies.Append(requestTokenCookieName, tokens.RequestToken, new CookieOptions()
{
HttpOnly = false,
Secure = true
});
}
}
context.Response.Headers.Add("Access-Control-Allow-Credentials", "true");

await next.Invoke(context);
}

在 Angular 应用程序中设置了 withCredentials: true。这在 localhost 中有效,但部署到 azure 时,Chrome 中未设置 cookie。在 Microsoft Edge 中,Cookie 在响应中显示为屏幕截图,但不在应用程序存储中显示。

enter image description here

最佳答案

我们无法从顶级域为 azurewebsites.net 的子域访问 Cookie,因为它列在公共(public)前缀列表中。

更多详细信息:ASP.NET5, MVC 6 Cookies not being shared across sites

关于angular - 在 azure 中部署时,未在 cookie 中设置防伪 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com