首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ASP.net核心WebAPI中使用deafult和own策略启用CORS

如何在ASP.net核心WebAPI中使用deafult和own策略启用CORS
EN

Stack Overflow用户
提问于 2020-07-10 19:38:50
回答 1查看 333关注 0票数 0

我希望通过EnableCors属性为一个控制器启用我自己的"MyPolicy“,而对于其他控制器,我希望使用默认策略。因此在我的配置服务方法中,我写道

代码语言:javascript
运行
复制
services.AddCors(options =>
{
    options.AddPolicy(name: "MyPolicy",
        builder => builder
            .WithOrigins("http://localhost:3000")
            .AllowCredentials()
            .AllowAnyMethod()
            .AllowAnyHeader());

    options.AddDefaultPolicy(
            builder => builder
            .AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader());
});

然后在Configure方法中我只需调用:

代码语言:javascript
运行
复制
app.UseCors();

它没有像我预期的那样工作。它只定义了DefaultPolicy,使用"MyPolicy“唯一方法是将它们用作:

代码语言:javascript
运行
复制
app.UseCors("MyPolicy");

但在这种情况下,默认策略不起作用。是否可以通过AddPolicy定义自己的策略,也可以通过AddDefaultPolicy定义默认策略。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-16 16:59:33

如果您想要使用许多自己的策略和默认策略,解决方案是在configureservices中定义:

代码语言:javascript
运行
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddDefaultPolicy(
            builder =>
            {
               
                builder.WithOrigins("http://example.com",
                                    "http://www.contoso.com");
            });

        options.AddPolicy("AnotherPolicy",
            builder =>
            {
                builder.WithOrigins("http://www.contoso.com")
                                    .AllowAnyHeader()
                                    .AllowAnyMethod();
            });

    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

并像这样通过EnableCorsAttribute使用策略:

代码语言:javascript
运行
复制
  // GET api/values
    [EnableCors("AnotherPolicy")]
    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "green widget", "red widget" };
    }

。在这种情况下,不要在configure方法启动类中调用app IApplicationBuilder对象的UseCors方法。

代码语言:javascript
运行
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }
    //Do not use this method:
    //app.UseCors();

    app.UseHttpsRedirection();
    app.UseMvc();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62833501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档