后端解决跨域问题

1、使用Cors中间件解决跨域:
services.AddCors(options =>
            {
            //允许所有跨域
                options.AddPolicy("CORS", cors =>
                {
                    cors.AllowAnyOrigin(); 
                    cors.AllowAnyHeader();
                    cors.AllowAnyMethod();
                });
                //指定跨域
                options.AddPolicy("CORS2", cors =>
                {
                    //多个用逗号隔开
                    cors.WithOrigins("http://localhost:8080");
                });
                //自己写逻辑
                options.AddPolicy("CORS3", cors =>
                {
                    cors.SetIsOriginAllowed(c =>
                    {
                    //c可以拿到客户端的ip、域名、端口
                    return c.Equals("http://localhost:8080");
                    });
                });
            });
//使用
app.UseCors("CORS");
2、使用过滤器解决跨域(本质上是加上了个请求头)
定义过滤器
public class CorsActionFilter : Attribute, IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext context)
        {
            context.HttpContext.Response
                .Headers.Add("Access-Control-Allow-Origin","http://localhost:8080");
        }

        public void OnActionExecuting(ActionExecutingContext context)
        {
        }
    }
在需要跨域请求的Action上面加此注解
或者直接在Startup里面配置全局生效
services.AddControllers(options =>
{
    options.Filters.Add<CorsActionFilter>();
});

 

经实验这么写可以正确访问

 

注: 笔者使用的项目框架:.NET Core 3.1

 
 
posted @ 2022-08-19 23:08  LoloJia  阅读(376)  评论(0)    收藏  举报