微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net core入门-跨域访问配置

Asp.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 跨域有两种,全局和区域

全局跨域:

打开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();

 局部跨域第一种用法:

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

2.在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://www.cnblogs.com/xiaoliangge/p/7650465.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐