在 webapi .net core 3.1 上添加 app.useauthentication 时 Cors 失败

Posted

技术标签:

【中文标题】在 webapi .net core 3.1 上添加 app.useauthentication 时 Cors 失败【英文标题】:Cors fail when add app.useauthentication on webapi .net core 3.1 【发布时间】:2021-07-22 17:00:23 【问题描述】:

我加UseAuthentication();到我的startup.cs 允许cors 失败并且不允许cors,请问有什么设置命令吗? (没有 app.UseAuthentication() 没有 cors 问题)

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        

        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseCors(
options => options.AllowAnyOrigin()
      .AllowAnyMethod()
      .AllowAnyHeader()
  ); app.UseHttpStatusCodeExceptionMiddleware();
        app.UseAuthentication();

在我拥有的 ConfigureServices 上:

  void ConfigureServices(IServiceCollection services)
....       


        services.AddCors();
                services.AddSSOAuthentication(Configuration, CurrentEnvironment);
                services.AddControllers();
                services.AddRequestLogging(opt =>
                
                    opt.ResponseTimeInMs = true;
                    opt.CookiesLoggingEnabled = false;
                );
                services.AddSwaggerGen();
    
            

【问题讨论】:

能否提供异常信息? 没有执行但我阻止了 cors 消息:(原因:CORS 请求没有成功)。 这能回答你的问题吗? Trouble with CORS Policy and .NET Core 3.1 【参考方案1】:

这对我有用:

readonly string MyAllowSpecificOrigins = "AnyPolicyName";

public void ConfigureServices(IServiceCollection services)
    
        services.AddCors(options =>
        
            options.AddPolicy(MyAllowSpecificOrigins,
                                builder =>
                                
                                    builder.AllowAnyOrigin();
                                );
        );
    
        /** etc. **/
    

编辑:同时添加

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

    /*...*/

    app.UseCors(MyAllowSpecificOrigins);

    /*...*/

【讨论】:

【参考方案2】:

你添加了吗

services.AddCors(options =>
            
                ...
            );

配置服务?

【讨论】:

以上是关于在 webapi .net core 3.1 上添加 app.useauthentication 时 Cors 失败的主要内容,如果未能解决你的问题,请参考以下文章

NET Core 3.1 MVC 授权/身份验证,带有在单独的 Net Core 3.1 Web Api 中从外部获取的令牌 (JWT)

仅在 IIS 中发布时,在 ASP.net Core 3.1 WebAPI 中启用 CORS 时出错

.net core 3.1 webapi解决跨域问题 GET DELETE POST PUT等

ASP.NET Core 3.1 WebAPI 自定义ActionFilter过滤器

[WebApi]ASP.Net Core 中使用JWT认证(3.1版本,5.0也可以使用)

[WebApi]ASP.Net Core 中使用JWT认证(3.1版本,5.0也可以使用)