后端解决跨域问题
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

浙公网安备 33010602011771号