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());
});
自上周更新以来,我们收到 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());
});