NuGet安装CORS程序包
Microsoft.AspNetCore.Mvc.Cors
配置CORS服务
- 在Startup.cs文件的ConfigureServices方法添加如下代码
//"cors" 策略名称可以自定义
services.AddCors(options => options.AddPolicy("cors",
builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
//新版的CORS中间件已经阻止使用允许任意Origin,
//即 AllowAnyOrigin 设置了也不会生效
//所以必须指定确切的协议+域+端口
.WithOrigins(new string[] { "http://127.0.0.1:5500" });
}));
配置CORS中间件
在Startuo.cs文件的Configure方法添加如下代码
app.UseCors("cors");
2.第二种方式
services.AddCors(options => options.AddPolicy("cors",
builder =>
{
builder.AllowAnyMethod()
.SetIsOriginAllowed(_ => true)
.AllowAnyHeader()
.AllowCredentials();
}));
3.第三种方式 自定义中间件,添加Cors处理类
public class CorsMiddleware
{
private readonly RequestDelegate next;
public CorsMiddleware(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Headers.ContainsKey(CorsConstants.Origin))
{
context.Response.Headers.Add("Access-Control-Allow-Origin",
context.Request.Headers["Origin"]);
context.Response.Headers.Add("Access-Control-Allow-Methods",
"PUT,POST,GET,DELETE,OPTIONS,HEAD,PATCH");
context.Response.Headers.Add("Access-Control-Allow-Headers",
context.Request.Headers["Access-Control-Request-Headers"]);
context.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
if (context.Request.Method.Equals("OPTIONS"))
{
context.Response.StatusCode = StatusCodes.Status200OK;
return;
}
}
await next(context);
}
}
在Configure方法中添加如下代码
app.UseMiddleware<CorsMiddleware>();