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

8 篇文章 0 订阅
7 篇文章 0 订阅

.Net Core中如何设置跨域访问

问题错误

一般情况WebApi都是跨域请求,没有设置跨域一般会报以下错误:

 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:48057' is therefore not allowed access.

所以需要进行配置 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();
            });
        });

以上两种按需求选择一种即可。
接着就是在Configure方法(中间件)中添加一下代码:

app.UseCors("自定义的跨域策略名称");//必须位于UserMvc之前 
app.UseMvc();

如果要全局配置跨域,要在中间件的路由配置中加上
.RequireCors(“自定义的跨域策略名称”)

//自我感觉可要可不要这步
app.UseEndpoints(endpoints =>
{
   endpoints.MapControllers().RequireCors("自定义的跨域策略名称");
});

局部跨域

ConfigureServices方法不变,删去Configure中的app.UseCors()方法

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

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

}

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

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

[HttpGet("{id}")]
[DisableCors]
public string Get(int id)
{
  return "value";
}

文章参考

https://blog.csdn.net/weixin_45978023/article/details/108518511
https://www.cnblogs.com/tianma3798/p/6920704.html
https://blog.johnwu.cc/article/asp-net-core-cors.html?from=singlemessage&isappinstalled=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值