【发布时间】:2018-05-29 22:38:21
【问题描述】:
希望允许从不同站点访问我的 API。为此有:
services
.AddCors(options =>
{
options.AddPolicy(PolicyName, builder =>
{
builder
.SetIsOriginAllowedToAllowWildcardSubdomains()
.WithOrigins(
"http://*.my-api.com",
"http://*.my-api.service"
)
...
这似乎不允许 httpS 或当我在请求中指定端口时。
例如: https://www.my-api.com:3000
Thought 可以用 SetIsOriginAllowed() 代替 WithOrigins
services
.AddCors(options =>
{
options.AddPolicy(PolicyName, builder =>
{
builder
.SetIsOriginAllowed(IsOriginAllowed)
其中 IsOriginAllowed 函数定义为:
private static bool IsOriginAllowed(string host)
{
var corsOriginAllowed = new[] { "my-api.com", "my-api.service" };
return corsOriginAllowed.Any(origin =>
Regex.IsMatch(host, $@"^http(s)?://.*{origin}(:[0-9]+)?$", RegexOptions.IgnoreCase));
}
但这根本不起作用,即使是正则表达式也会在我想要的时候返回 true。
有谁知道为什么这不起作用,并且可以告诉我允许 httpS 的正确方法(除了使用 httpS 和不同端口复制 WithOrigins() 中的所有域。
谢谢
【问题讨论】:
标签: asp.net-core cors