如何将CORS用于ASP.Net Core

时间:2017-01-31 08:05:55

标签: asp.net .net cors

我想构建一个从另一台服务器调用的ASP.NET服务,但它不允许我访问该服务。

4 个答案:

答案 0 :(得分:5)

您只需要在startup.cs中插入此代码:

app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());

请记住在上面使用它:

app.UseMvc()

玩得开心!

答案 1 :(得分:3)

您应该查看this article以查看所有可用选项:

  • 简单设置

    public void ConfigureServices(IServiceCollection services) {     services.AddCors(); }

  • 使用中间件进行设置

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        // Shows UseCors with CorsPolicyBuilder.
        app.UseCors(options => options.WithOrigins("http://example.com").AllowAnyMethod());
    
        // other code may come here
    }
    
  • MVC项目中的CORS

行动级别

[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
    [EnableCors("AllowSpecificOrigin")]
    public IActionResult Index()
    {
        return View();
    }
}

控制器级别

[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
}

以及许多选项,例如允许的来源,允许的HTTP方法,公开的响应标头,如何处理凭据。

尝试自行设置并遇到特定的问题,如果您遇到问题。

答案 2 :(得分:2)

请务必安装nuget package

Install-Package Microsoft.AspNetCore.Cors

配置startup.cs,类似于以下内容:

public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        //...
    }

    public void ConfigureServices(IServiceCollection services)
    {
        //...
        //Register Cors policy
        services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });
        services.AddMvc();
        //...

    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        //...
        app.UseCors("CorsPolicy"); //Make sure the policy name matches with the provided above
        //...
    }
}

答案 3 :(得分:0)

您可以在Configureups服务方法的“启动”类中配置CORS `

public void ConfigureServices(IServiceCollection services)
{  
      services.AddCors(options =>
    {
        options.AddPolicy("CorsPolicy",
            builder => builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials());
    });
}

将其应用于每个请求

 public void Configure(IApplicationBuilder app)
{
app.UseCors("MyPolicy");
}

您可以在Controller或Method上应用,例如,添加属性

[EnableCors("MyPolicy")]