ASP.NET CORE 中不允许主域的 CORS 问题

Posted

技术标签:

【中文标题】ASP.NET CORE 中不允许主域的 CORS 问题【英文标题】:CORS Issue in not allowing main domain in ASP.NET CORE 【发布时间】:2020-12-06 08:46:39 【问题描述】:

我在 ASP.NET Core 中使用以下代码

         services.AddCors(policy => policy.AddPolicy(Constant.CorsPolicy, builder =>
        
            var allowedDomain = configuration.GetValue<string>("AllowedDomains").Split(",");

            services.AddCors(policy => policy.AddPolicy(Constant.CorsPolicy, builder =>
            
                builder.WithOrigins(allowedDomain)
                       .SetIsOriginAllowedToAllowWildcardSubdomains()
                       .AllowAnyMethod()
                       .AllowAnyHeader();

            ));
        ));

为了允许所有子域和主域,这段代码的作用是允许所有子域,但不允许主域,我正在从配置中读取值。

“AllowedDomains”:“https://.test.dk, http://.test.dk, http://test.dk”

以下api在命中时是不允许的:

https://api.test.dk/api/v1/Product/Search

【问题讨论】:

你在 Startup 的 Configure() 方法上做 app.UseCors() 吗? 此外,您允许的域配置必须具有通配符语法,例如“https://*.test.dk” 这能回答你的问题吗? Configure cors to allow all subdomains using ASP.NET Core (Asp.net 5, MVC6, VNext) 另外,CORS 允许您位于域 A 上的网页向位于域 B 上的 API 发出请求,当您说“不允许使用以下 api”时,我认为您'正在尝试 API 到 API 的通信,其中 CORS 不应该成为问题。 @PabloRecalde 我正在使用 app.UseCors(Constant.CorsPolicy); 【参考方案1】:

尽量简化CORS,这样写:

在您的 ConfigureServices 方法中

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

在您的配置方法中

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 

        app.UseCors(options =>
       options.WithOrigins("http://localhost:3000")
       .AllowAnyHeader()
       .AllowAnyMethod());
 

【讨论】:

"AllowedWildDomains": "https://*.test.dk" "AllowedDomains": "test.dk" options.AddPolicy(Constant.CorsWildPolicy,builder => builder.WithOrigins(allowedWildDomain) .SetIsOriginAllowedToAllowWildcardSubdomains().AllowAnyMethod() .AllowAnyHeader(); ); options.AddPolicy(Constant.CorsPolicy,builder => builder.WithOrigins(allowedDomain) .AllowAnyMethod() .AllowAnyHeader(); );我添加了两个单独的策略,一个用于通配符,另一个用于域。 @noobprogrammer @nooprogrammer 我添加了两个策略 app.UseCors(Constant.CorsPolicy); app.UseCors(Constant.CorsWildPolicy); 我的问题是如何检查前端应用程序是否可以正确访问我的 API?

以上是关于ASP.NET CORE 中不允许主域的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 系列之允许跨越访问(Enable Cross-Origin Requests:CORS)

ASP.NET MVC 中不允许使用 POST 方法(使用 CORS)

Asp.Net Core 允许 CORS 中的 IP 范围

asp.net core 系列之允许跨域访问-1(Enable Cross-Origin Requests:CORS)

如何在ASP NET Core中实现CORS跨域

asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)