欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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>()//跨域
}
相关标签: net core