我想读取请求中X-Forwarded-For
标题值的值。阅读X-Forwarded-For标题
我在C#试图
HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault();
。
或者是否需要拆分标头":"
并取第二个字符串? 我问这是因为,维基百科说
领域的一般格式为: X - 转发,适用于:客户端1,PROXY1,Proxy2将
我想读取请求中X-Forwarded-For
标题值的值。阅读X-Forwarded-For标题
我在C#试图
HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault();
。
或者是否需要拆分标头":"
并取第二个字符串? 我问这是因为,维基百科说
领域的一般格式为: X - 转发,适用于:客户端1,PROXY1,Proxy2将
,你得到的回报格式为client1,proxy1,proxy2
所以你用逗号分隔它,并得到第一个看到你的客户端的IP。
不要忘记,X-Forwarded-For可以包含任何客户端写入。它可以包含XSS或SQL注入。
如果有帮助,这是获得用户的IP地址,考虑到X_FORWARDED_FOR头
var forwardedFor = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
var userIpAddress = String.IsNullOrWhiteSpace(forwardedFor) ?
Request.ServerVariables["REMOTE_ADDR"] : forwardedFor.Split(',').Select(s => s.Trim()).First();
的简单方法有时首先可能包含本地(私有)保留这是没有用的地址之一。第一个位置也是可以欺骗的。
下面的答案建议从右到左行走,直到您打到公共地址。
https://husobee.github.io/golang/ip-address/2015/12/17/remote-ip-go.html
你试过了你的代码吗? – svick 2011-06-11 15:45:17
我会问同样的事情:) – 2011-06-11 16:17:34
你的代码是正确的,除了我只是这样做:HttpContext.Current.Request.Headers [“X-Forwarded-For”]。Split(',')。FirstOrDefault (); – Tsar 2011-06-13 08:21:46