net core3跨域配置

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>()//跨域
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值