如何在.Net Core中设置跨域访问?()

原文:https://blog.csdn.net/love_shang/article/details/113136345

.Net Core中如何设置跨域访问问题错误全局跨域局部跨域文章参考问题错误一般情况WebApi都是跨域请求,没有设置跨域一般会报以下错误:

No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:48057’ is therefore not allowed access.1所以需要进行配置 ASP.net Core的两种跨域:全局和区域我们常用的是全局跨域,区域跨域可能用的比较少。在讲跨域前先讲一下配置我们在创建一个WebApi项目的时候会自动引用相关框架

一般框架中都有我们要进行设置,你不设置的话,那自然没办法使用了啊配置信息统一都在StartUp.cs 文件哦

全局跨域打开Startup.cs文件,在ConfigureServices方法中添加以下代码

//1.配置跨域处理,允许所有来源: services.AddCors(options => options.AddPolicy(“自定义的跨域策略名称”, p => p.AllowAnyOrigin()) ); //2允许一个或多个具体来源: services.AddCors(options => { // Policy 名稱 CorsPolicy 是自訂的,可以自己改 options.AddPolicy(“自定义的跨域策略名称”, policy => { // 設定允許跨域的來源,有多個的話可以用 `,` 隔開 policy.WithOrigins(“http://localhost:3000″,”http://127.0.0.1”) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });1234567891011121314151617以上两种按需求选择一种即可。接着就是在Configure方法(中间件)中添加一下代码:

app.UseCors(“自定义的跨域策略名称”);//必须位于UserMvc之前 app.UseMvc();12如果要全局配置跨域,要在中间件的路由配置中加上.RequireCors(“自定义的跨域策略名称”)

//自我感觉可要可不要这步app.UseEndpoints(endpoints =>{ endpoints.MapControllers().RequireCors(“自定义的跨域策略名称”);});12345局部跨域ConfigureServices方法不变,删去Configure中的app.UseCors()方法

在Controller顶部或者Action方法顶部加上[EnableCors(“自定义的跨域策略名称”)]特性,例如

[EnableCors(“自定义的跨域策略名称”)][Route(“api/[controller]”)] public class ContactController : Controller{

}123456以上就可实现指定某个Controller或者Action跨域

禁止跨域:禁止跨域在Controller或者Action加上[DisableCors]特性即可禁止跨域

[HttpGet(“{id}”)][DisableCors]public string Get(int id){  return “value”;}123456文章参考https://blog.csdn.net/weixin_45978023/article/details/108518511https://www.cnblogs.com/tianma3798/p/6920704.htmlhttps://blog.johnwu.cc/article/asp-net-core-cors.html?from=singlemessage&isappinstalled=0————————————————版权声明:本文为CSDN博主「love_shang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/love_shang/article/details/113136345

————————

原文:https://blog.csdn.net/love_shang/article/details/113136345

.Net Core中如何设置跨域访问问题错误全局跨域局部跨域文章参考问题错误一般情况WebApi都是跨域请求,没有设置跨域一般会报以下错误:

No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:48057’ is therefore not allowed access.1所以需要进行配置 ASP.net Core的两种跨域:全局和区域我们常用的是全局跨域,区域跨域可能用的比较少。在讲跨域前先讲一下配置我们在创建一个WebApi项目的时候会自动引用相关框架

一般框架中都有我们要进行设置,你不设置的话,那自然没办法使用了啊配置信息统一都在StartUp.cs 文件哦

全局跨域打开Startup.cs文件,在ConfigureServices方法中添加以下代码

//1.配置跨域处理,允许所有来源: services.AddCors(options => options.AddPolicy(“自定义的跨域策略名称”, p => p.AllowAnyOrigin()) ); //2允许一个或多个具体来源: services.AddCors(options => { // Policy 名稱 CorsPolicy 是自訂的,可以自己改 options.AddPolicy(“自定义的跨域策略名称”, policy => { // 設定允許跨域的來源,有多個的話可以用 `,` 隔開 policy.WithOrigins(“http://localhost:3000″,”http://127.0.0.1”) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });1234567891011121314151617以上两种按需求选择一种即可。接着就是在Configure方法(中间件)中添加一下代码:

app.UseCors(“自定义的跨域策略名称”);//必须位于UserMvc之前 app.UseMvc();12如果要全局配置跨域,要在中间件的路由配置中加上.RequireCors(“自定义的跨域策略名称”)

//自我感觉可要可不要这步app.UseEndpoints(endpoints =>{ endpoints.MapControllers().RequireCors(“自定义的跨域策略名称”);});12345局部跨域ConfigureServices方法不变,删去Configure中的app.UseCors()方法

在Controller顶部或者Action方法顶部加上[EnableCors(“自定义的跨域策略名称”)]特性,例如

[EnableCors(“自定义的跨域策略名称”)][Route(“api/[controller]”)] public class ContactController : Controller{

}123456以上就可实现指定某个Controller或者Action跨域

禁止跨域:禁止跨域在Controller或者Action加上[DisableCors]特性即可禁止跨域

[HttpGet(“{id}”)][DisableCors]public string Get(int id){  return “value”;}123456文章参考https://blog.csdn.net/weixin_45978023/article/details/108518511https://www.cnblogs.com/tianma3798/p/6920704.htmlhttps://blog.johnwu.cc/article/asp-net-core-cors.html?from=singlemessage&isappinstalled=0————————————————版权声明:本文为CSDN博主「love_shang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/love_shang/article/details/113136345