首页 > 解决方案 > Asp.Net Core 允许 CORS 中的 IP 范围

问题描述

我正在使用标准的 ASP.NET Core 中间件,并且我希望允许 IP 地址范围(在我的情况下,我正在寻找私有 IP 地址范围)以简化开发。

目前,我的中间件如下所示:

app.UseCors(builder =>
    builder.WithOrigins("http://localhost:8080", "https://test-env.com")
           .AllowAnyHeader()
           .AllowAnyMethod());

但现在我想添加一系列 IP,例如172.16.0.0–172.31.255.255,以 CIDR 表示法172.16.0.0/12。我该怎么做?

我尝试了以下方法,但似乎都不起作用:

标签: c#asp.net-corecors

解决方案


SetIsOriginAllowedASP.NET Core 2.0 引入了使用该方法完全控制如何验证源的能力。这是一个如何配置的示例:

app.UseCors(builder =>
    builder.SetIsOriginAllowed(MyIsOriginAllowed) 
           .AllowAnyHeader()
           .AllowAnyMethod());

// ...

private static bool MyIsOriginAllowed(string origin)
{
    var isAllowed = false;

    // Your logic.

    return isAllowed;
}

传入的回调SetIsOriginAllowed是类型Func<string, bool>的,预计将返回true允许的来源,false否则。

在针对范围本身进行验证方面,还有另一个可能有用的答案:如何使用 CIDR 表示法查看 IP 地址是否属于 IP 范围内?.


推荐阅读