cors - qidot/YunstpNetCore GitHub Wiki
跨域
1.配置service
public void ConfigureServices(IServiceCollection services)
{
//...其他的代码段
services.AddCors(
options =>
{
options.AddPolicy("any", builder =>
{
builder.AllowAnyOrigin() //允许任何来源的主机访问
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();//指定处理cookie
});
});
}
2.配置中间件
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("any"); //跨域配置
}
3.配置路由特性
[EnableCors("any")]//跨域
public class BaseController : ControllerBase
{
}
这里我们定义一个基础控制器, 打上 支持跨域标签, 其他的控制器都继承在 BaseController 中,这样就不用在每个action上都写特性了。
按照一般的mvc模式呢,到这里应该已经可以实现跨域的请求了,如下图:

不过,如果我们是用antd的开发框架,如:VUE,REACT,会在请求后端的时候,先OPTIONS一次,来预请求是否通畅,如下图:

发现不成功,提示了方法不被支持,那如果我每个方法上都加上标签:
[HttpOptions("xxx")]
也是可以的,但是此方法,无疑是很蠢的,所以,还是需要对OPTIONS方法增加一个统一的支持
4.配置OPTIONS中间件
详细代码请查看: MyOptionsMiddleWare
//在中间件配置中增加
app.UseOptions();
5.再次尝试

显示:200了,到这就成功实现了完整的跨域处理了