在 asp.net 核心中,我可以使用中间件在某些方法上启用 CORS,如 described here
我想知道是否可以为 localhost
上的任何方案和任何端口启用 CORS (仅用于测试目的)。我试过通配符,但它不起作用
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
if(_environment.IsDevelopment())
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("http://localhost/*",
"https://localhost/*");
});
});
}
else
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
}
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
最佳答案
ASP.NET Core 的 SetIsOriginAllowed
方法使您可以完全控制是否允许来源参与 CORS。这是基于您的代码示例的示例:
if(_environment.IsDevelopment())
{
options.AddDefaultPolicy(builder =>
{
builder.SetIsOriginAllowed(origin => new Uri(origin).Host == "localhost");
});
}
else
{
// ...
}
origin
传递给 SetIsOriginAllowed
的值delegate 是完整的原点,看起来像 http://localhost:8080
.使用 Uri
,上面的代码比较 Host
反对 localhost
,最终允许所有 localhost
起源。
关于c# - 为本地主机上的任何端口启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57530680/