专栏首页Vincent-yuandotnet core 之 CORS使用示例

dotnet core 之 CORS使用示例

这里列举几个经过验证的可用的CORS使用示例,

方便在需要的时候可以直接使用

示例1

#region snippet2
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy(MyAllowSpecificOrigins,
                builder =>
                {
                    //1.可用
                    //builder.WithOrigins("http://example.com",
                    //                    "http://www.contoso.com",
                    //                    "http://localhost:65317");

                    builder.AllowAnyOrigin(); //2.可用

                });
            });

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }
        #endregion

        #region snippet3
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseCors(MyAllowSpecificOrigins); 

            app.UseHttpsRedirection();
            app.UseMvc();
        }
        #endregion

这种比较常见,即在ConfigureServices中添加中间件及定义其策略;而在Configure中把中间件设置到管道中

示例2

public void ConfigureServices(IServiceCollection services)
        {
            //services.AddCors(); //经试验,此句加或者不加,都是可以的

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        #region snippet2
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            // Shows UseCors with CorsPolicyBuilder.
            app.UseCors(builder =>
            {
                builder.WithOrigins("http://example.com",
                                    "http://www.contoso.com",
                                    "https://localhost:44375",
                                    "http://localhost:65317");
            });

            app.UseHttpsRedirection();
            app.UseMvc();
        }
        #endregion

注意,这个示例中,直接在Configure中的app.UseCors中设置的跨域的一些要求,这种写法经试验也是可以的

示例3

public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddDefaultPolicy(
                    builder =>
                    {
                       
                        builder.WithOrigins("http://example.com",
                                            "http://www.contoso.com", "http://localhost:65317");
                    });

                options.AddPolicy("AnotherPolicy",
                    builder =>
                    {
                        builder.WithOrigins("http://www.contoso.com", "http://localhost:65317")
                                            .AllowAnyHeader()
                                            .AllowAnyMethod();
                    });

            });

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();
        }

经试验发现,像这种没有在Configure中使用app.UseCors的,应该都属于局部设置跨域的,需要在相应的Controller或者Action方法上,使用注解:

 //[EnableCors("AnotherPolicy")]  //这种事有名称的策略的注解添加
    [EnableCors()]         //这种是模式策略的注解添加
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase

注意,即使是默认的策略也是需要使用注解进行声明的,否则会跨域错误。默认的策略只是说不用在注解中声明策略名而已

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • asp.net core 系列之中间件基础篇(middleware)

    请求委托(request delegate)是用于建立(build)请求管道的,请求委托可以处理每个Http的请求;

    Vincent-yuan
  • asp.net core 系列之Startup

    而在 Program 中,当 host builder 上的 Build 被调用时,应用的 host 被 built 。

    Vincent-yuan
  • asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)

    使用的时候,注意 WithOrigins("https://localhost:<port>"); 这个地址替换为客户端地址(即调用方:这里指部分Razor代码...

    Vincent-yuan
  • express简单笔记

    创建文件夹views ,在views里创建index.ejs , 在index.ejs内输入 hello lilu

    lilugirl
  • Android 组件化开源app -开眼短视频(OpenEyes)

    该开源项目采用组件化的方式开发,使用MVVM + AndroidX + jetpack 组件为基本架构进行开发。

    darryrzhong
  • 爆:谷歌为移动应用(App)发布顶级域名,这一次别再错过了

    今天,我们(谷歌)发布 . app,Google 注册表中最新的顶级域名(TLD)。

    非著名程序员
  • 前端 3d开发怎么操作,什么流程?

    我们都知道现今社会复合型人才是企业刚需,只会一项本领难以在企业中立足,即便是前端工程师,如果你只会敲代码改网页也是不行了,要多方面拓展自己的才能。比如研究可视化...

    要不要吃火锅
  • sanic(1):创建app

    sanic是一个非常NB的高性能python框架。最近正好公司有一个小项目。所以用sanic来试试手是很不错的了。 由于sanic的中文资料和项目还很少很少,...

    超级大猪
  • Flask阶段(一)代码

    小闫同学啊
  • DDR3 接口分析

    下图为各种参数设定,有bank、column、rank等参数设置(其实你不用动他们,这些都是之前选好的,不记得自己选了什么?乖乖!不如再翻翻DDR3 IP 核配...

    数字芯片社区

扫码关注云+社区

领取腾讯云代金券