net core3跨域配置
程序员文章站
2024-01-21 19:09:58
...
1、定义跨域中间件类
/// <summary>
/// 跨域中间件
/// </summary>
public class CorsMiddleware
{
private readonly RequestDelegate _next;
/// <summary>
/// 管道执行到该中间件时候下一个中间件的RequestDelegate请求委托,如果有其它参数,也同样通过注入的方式获得
/// </summary>
/// <param name="next">下一个处理者</param>
public CorsMiddleware(RequestDelegate next)
{
_next = next;
}
/// <summary>
/// 自定义中间件要执行的逻辑
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public async Task Invoke(HttpContext context)
{
context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
context.Response.Headers.Add("Access-Control-Allow-Headers",
context.Request.Headers["Access-Control-Request-Headers"]);
context.Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
//若为OPTIONS跨域请求则直接返回,不进入后续管道
if (context.Request.Method.ToUpper() != "OPTIONS")
await _next(context);//把context传进去执行下一个中间件
}
}
2、注册跨域中间件
在Startup启动类中Configure方法注册跨域中间件
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//允许body重用
app.Use(next => context =>
{
context.Request.EnableBuffering();
return next(context);
})
.UseMiddleware<CorsMiddleware>()//跨域
}
上一篇: php数组中包含中文的排序方法