大家好,我收到了客户的一个要求,要求我将客户的IP地址传递给一个反欺诈的API。我在一起工作。Net Core和C#进行web开发,我得到的客户端IP地址如下:
HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
问题是,他们告诉我,我正在传递一个本地IP地址,而不是客户端IP。
是否有其他方法可以获得所请求的正确IP?
提前感谢
您可能没有添加UseForwardedHeaders
中间件。
添加UseForwardedHeaders
中间件获取客户端IP
地址
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
然后:
string ip = _httpContext.Connection.RemoteIpAddress.ToString();
因为当应用程序在IIS
上运行时,IIS
将HTTP
请求转发到Kestrel
,并且您总是获得本地IP
地址,而不是客户端IP