c# - 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
。我该怎么做?
我尝试了以下方法,但似乎都不起作用:
http://172.16.0.0/12:4200
http://172.16.*.*:4200
http://172.16.*:4200
解决方案
SetIsOriginAllowed
ASP.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 范围内?.
推荐阅读
- azure - 声纳显示“该项目的主分支为空”,但代码已正确分析
- reporting - 简单的报告请求 - 运行过去两周创建的票证和关闭的票证的总数
- linux - 运行带有前缀 sudo 的命令和以 root 用户身份运行命令之间的不同行为,看似 sudo 的授权较少
- python - 如何在数据集中找到重复的名称并将它们放在单独的列中?
- c++ - unordered_map:试图引用已删除的函数
- node.js - Netlify Page Not Found 错误(无法将 serverless express 后端部署到 NETLIFY)
- python - Python: Pandas - 嵌套循环需要很长时间才能完成。如何加快速度?
- c# - Xamarin iOS new StackTrace() 杀死应用程序:未满足断言条件“klass”
- css - 如何在父类或 id 中设置 A 元素的样式
- javascript - 使用 Vue 在 p 标签内渲染 HTML