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 系列之允许跨域访问-1(Enable Cross-Origin Requests:CORS)
asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)