【发布时间】:2016-04-01 09:06:32
【问题描述】:
我尝试获取远程(客户端)IP 地址:
var ip = httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress
但它只适用于本地请求(它会返回::1 值)
当我从远程机器加载页面时,该值为空。我调查了这种情况下Features 集合中没有IHttpConnectionFeature。
为什么?以及如何正确获取远程IP地址?
【问题讨论】:
-
据我所知,它存在几个问题,特别是如果您将它托管在负载均衡器和/或 iis 后面。有一个
UseOverrideHeaders左右,但是会在rc2中重命名为UseForwardedHeaders,见公告github.com/aspnet/Announcements/issues/147。但据我了解,这可能对您也没有帮助,因为它返回最后一个 X-Forwarded-For 在许多云部署中将是反向代理而不是原始用户。 -
但据我所知,讨论中有一个功能允许确定从哪个跃点获取 X-Forwarded-For(即 2 个跃点返回,而不仅仅是最新的
-
我认为这是一个很好的答案stackoverflow.com/a/36316189/625581
标签: asp.net http ip asp.net-core asp.net-core-mvc