.net core 跨域

1、管理 NuGet 添加引用
     Microsoft.AspNetCore.Cors

2、Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    var urls = Configuration["AppSetting:Cores"].Split(',');
 
    #region 跨域访问 .NET Core 2.X
    services.AddCors(options =>
    {
        options.AddPolicy(AllowSpecificOrigins, builder => { builder.WithOrigins(urls); });
    });
    #endregion
 
    #region 跨域访问 .NET Core 3.X
    services.AddCors(options =>
    {
        options.AddPolicy("AllowSpecificOrigin", builder =>
        {
            //builder.WithOrigins("https://localhost:44390", "http://0.0.0.0:3201").AllowAnyHeader();
            builder.WithOrigins(urls) // 允许部分站点跨域请求
            //.AllowAnyOrigin() // 允许所有站点跨域请求(net core2.2版本后将不适用)
            .AllowAnyMethod() // 允许所有请求方法
            .AllowAnyHeader() // 允许所有请求头
            .AllowCredentials(); // 允许Cookie信息
        });
    });

    #endregion 
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }  
    app.UseRouting(); 
 
    #region 跨域【UseCors必须放在UseRouting和UseEndpoints之间】
    app.UseCors("AllowSpecificOrigin");
    #endregion

 

    app.UseAuthentication();
 
    app.UseEndpoints(endpoints =>
    {
      endpoints.MapControllers();
    });
}
 

3、appsettings.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AppSetting": {
    "Cores": "https://localhost:44390,http://0.0.0.0:3201"
  },

  "AllowedHosts": "*"

4、Controller【使用属性启用 CORS,[EnableCors] 属性提供了一种全局应用 CORS 的替代方法】

 [EnableCors("AllowSpecificOrigin")]
    [Route("api/[controller]")]
    [ApiController]
    public class DefaultController : ControllerBase
    {
        。。。。。
    }

5、Asp.NET Core api 部署在 IIS 上 405-Method Not Allowed
解决方法:在部署的目录中找到 web.config 文件,添加 runAllManagedModulesForAllRequests



 
   
     
       
     

     
       
     
     
   

 

 

你可能感兴趣的:(html,前端)