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

注意,即使是默認的策略也是需要使用注解進行聲明的,否則會跨域錯誤。默認的策略只是說不用在注解中聲明策略名而已

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM