• 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

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

  • 相关阅读:
    ionic platform add ios, Error:spawn EACCES
    OC中分类(Category)和扩展(Extension)
    JSON.stringify() 格式化 输出log
    JavaScript 闭包
    vue路由跳转到指定页面
    vue使用路由跳转到上一页
    vue子传父多个值
    vue里router-link标签设置动态路由的3个方法
    地址栏的路由输入不匹配时候,设置默认跳转页面(redirect)
    把router-link标签渲染成指定的标签
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/10842083.html
Copyright © 2020-2023  润新知