我正在使用 ASP.NET Core Web API 项目,我希望允许对某人的 IP 地址使用 CORS 策略,并且我希望允许 IP 地址范围。使用这种 CORS 方法,这允许每个人使用 CORS,但我只想允许一个 IP 地址。谁能帮我?预先感谢🤞。
这是我为我的
Program.cs
文件中的每个人允许 CORS 的方法。
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();
您可以使用
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();
});
});