提问人:봊Ì'ɱ Јìԥ 提问时间:10/25/2023 最后编辑:Brian Tompsett - 汤莱恩봊Ì'ɱ Јìԥ 更新时间:10/25/2023 访问量:113
如何在核心 Web API 项目中允许具有 IP 地址 ASP.NET CORS?
How to allow CORS with IP address in ASP.NET Core Web API project?
问:
我正在使用 ASP.NET Core Web API 项目,我想允许使用某人的 IP 地址的 CORS 策略,并且我想允许 IP 地址范围。使用此 CORS 方法,这是允许每个人的 CORS,我只想允许一个 IP 地址。谁能帮我?
这是我允许文件中每个人使用 CORS 的方法。Program.cs
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// Add CORS support
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
// Enable CORS
app.UseCors();
app.MapControllers();
app.Run();
答:
2赞
Jason Pan
10/25/2023
#1
您可以使用它来实现它。SetIsOriginAllowed
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policyBuilder =>
{
policyBuilder.SetIsOriginAllowed(origin =>
{
// Convert domain to IP
// be careful, domains can have multiple IPs
var host = new Uri(origin).Host;
var ipAddresses = Dns.GetHostAddresses(host);
// List of allowed IPs
var allowedIPs = new List<IPAddress>
{
IPAddress.Parse("192.168.1.1"), // Replace with your allowed IPs
IPAddress.Parse("192.168.1.2") // Another IP
};
return ipAddresses.Any(ip => allowedIPs.Contains(ip));
})
.AllowAnyMethod()
.AllowAnyHeader();
});
});
评论
0赞
jub0bs
10/25/2023
但是,为什么要在每次调用回调时一次又一次地解析相同的 IP 地址呢?您不能一劳永逸地在回调之外解析它们吗?此外,我认为 OP 对允许 IP 范围感兴趣(无论好坏......
1赞
Jason Pan
10/25/2023
嗨@jub0bs,在我的理解中,UseCors 最初是一个中间件。对于其他使用域名的方法,每次都会解析,对吧?
1赞
jub0bs
10/25/2023
@JasonPan 我的建议是,计算只需要发生一次(在初始化时),而不是每次调用中间件时。allowedIPs
评论