【问题标题】:Get Correct Client IP Address with .Net Core使用 .Net Core 获取正确的客户端 IP 地址
【发布时间】:2022-01-20 14:47:16
【问题描述】:
大家好,我的客户要求我将客户端 IP 地址传递给反欺诈 API。
我正在使用 .Net Core 和 C# 进行 Web 开发,我正在获取客户端 IP 地址,如下所示:
HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
问题是他们告诉我我传递的是本地 IP 地址而不是客户端 IP。
还有其他方法可以获取请求的正确 IP 吗?
提前致谢
【问题讨论】:
标签:
c#
.net
asp.net-core
.net-core
【解决方案1】:
您可能没有添加UseForwardedHeaders 中间件。
添加UseForwardedHeaders中间件获取客户端IP地址
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
然后:
string ip = _httpContext.Connection.RemoteIpAddress.ToString();
因为当应用程序在IIS 上运行时,IIS 将HTTP 请求转发到Kestrel,并且始终获得本地IP 地址而不是客户端IP