NET5 WebApi 解決跨域問題


第一步:在appsettings.json文件中配置跨域訪問域名,如:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "CorsPaths": {
    "OriginOne": "http://xxxx.com" //跨域請求網址,跨域添加多個
  }
}

第二步:Nuget添加Microsoft.AspNetCore.Cors引用

第三步:Startup類添加全局變量:

public readonly string anyAllowSpecificOrigins = "any";//解決跨域

第四步:Startup類中的ConfigureServices方法里添加配置跨域處理cors,代碼如下:

public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "Web", Version = "v1" });
            });

            services.AddControllers(options =>
            {
                options.Filters.Add(typeof(ApiExceptionFilter));
            });

            //解決跨域
            services.AddCors(options =>
            {
                options.AddPolicy(anyAllowSpecificOrigins, corsbuilder =>
                {
                    var corsPath = Configuration.GetSection("CorsPaths").GetChildren().Select(p => p.Value).ToArray();
                    corsbuilder.WithOrigins(corsPath)
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();//指定處理cookie
                });
            });
        }

第五步:Startup類中的Configure方法中添加app.UseCors(anyAllowSpecificOrigins),如下代碼:

 app.UseRouting();
 app.UseCors(anyAllowSpecificOrigins);//支持跨域:允許特定來源的主機訪問
app.UseAuthorization();

注意:以上三行代碼順序不能換,否則報錯!

第六步:Startup類中的Configure方法中添加 .RequireCors(anyAllowSpecificOrigins),如下代碼:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web v1"));
            }

            app.UseHttpsRedirection();

            app.UseRouting();
            app.UseCors(anyAllowSpecificOrigins);//支持跨域:允許特定來源的主機訪問
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers().RequireCors(anyAllowSpecificOrigins);//支持跨域
            });
        }

 

END

 


免責聲明!

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



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