React 和 dotnet core 3.1 的间歇性 CORS 错误

Intermittent CORS errors with React and dotnet core 3.1

自上周更新以来,我们收到 Google Chrome 的 INTERMETNT CORS 错误。 您好,在 CORS 上,自上周更新以来,我们收到 Google Chrome 的 INTERMETNT CORS 错误。

我们的运营人员推出了一项忽略 Access-Control-Allow-Private-Network 的政策,这似乎有帮助,但对非托管计算机没有帮助。

这是我们的政策:

services.AddCors(options =>
{
    options.AddPolicy(PolicyName,
        corsBuilder => corsBuilder.AllowAnyOrigin()
            .AllowAnyHeader()
            .AllowAnyMethod());
});


app.UseCors(PolicyName);

我们可以通过以下方式解决此问题:

为专用网络 CORS 创建中间件。 来自 Github Issue

    public static class PrivateCorsMiddleware 
    {
        public static Func<HttpContext, Func<Task>, Task> CorsAllowPrivateNetwork()
        {
            return async (ctx, next) =>
            {
                if (ctx.Request.Method.Equals("options", StringComparison.InvariantCultureIgnoreCase) 
                    && ctx.Request.Headers.ContainsKey("Access-Control-Request-Private-Network"))
                {
                    ctx.Response.Headers.Add("Access-Control-Allow-Private-Network", "true");
                }

                await next();
            };
        }

    }
}

使用中间件

app.Use(PrivateCorsMiddleware.CorsAllowPrivateNetwork());

然后修改策略以使用特定来源以增强安全性。

    services.AddCors(options =>
    {
        options.AddPolicy(PolicyName,
            corsBuilder => corsBuilder
                .WithOrigins(_configuration["CorsAllowedHosts"])
                .AllowAnyHeader()
                .AllowAnyMethod());
    });