我已经按照this Microsoft's documents page所述的所有步骤进行操作,以便能够通过调用HttpContext.Connection.RemoteIpAddress
在IIS托管的应用程序中获取远程客户端的IP地址,但是我一直在获取{{1 }}。只有一种奇怪的情况可以为我获取远程客户端的IP地址,而这是通过下面的服务配置代码来完成的,其中::1
由ForwardedForHeaderName
初始化,这对我来说没有任何意义!
X-Forwarded-For-Custom-Header-Name
完整的source code is found in this github repo,我想知道必须执行什么确切的更改才能通过删除“ X-Forwarded-For-Custom-Header-Name”成功获取远程IP地址,以及为什么要这样一个字符串获取我的IP地址!
答案 0 :(得分:1)
这个想法是,X-Forwarded-For-Custom-Header-Name
应该用自定义标头名称替换,以防您的代理/负载均衡器不使用标准的X-Forwarded-For
标头,而是使用其他标头。
虽然X-Forwarded-For
是此处的实际标准,但是某些代理/负载平衡器使用另一个标头。在这种情况下,您可以将其设置为它使用的值,例如X-Real-IP
。
在这种情况下,您必须查看设置中使用了哪些标头,然后相应地配置应用程序。
使用默认的托管模型在IIS中托管时(dotnet publish
应生成适当的web.config
文件),转发已由IIS中间件设置并处理。
答案 1 :(得分:0)
除非您希望代理在与通常的package main
import (
"log"
"reflect"
)
if reflect.TypeOf([]string{"a"}).Elem() == reflect.String {
log.Println("success")
}
if reflect.TypeOf([]int{1}).Elem() == reflect.Int{
log.Println("success")
}
if reflect.TypeOf([]float64{1.00}).Elem() == reflect.Float64 {
log.Println("success")
}
不同的标头中转发原始IP地址,否则不必指定X-Forwarded-For
,而是将其配置为:
ForwardedForHeaderName