如何在 ASP.NET Core Web API 项目中允许 IP 地址的 CORS?

问题描述 投票:0回答:1

我正在使用 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();
api asp.net-core cors asp.net-core-webapi ip-address
1个回答
0
投票

您可以使用

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();
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.