2011-06-11 65 views
14

我想读取请求中X-Forwarded-For标题值的值。阅读X-Forwarded-For标题

我在C#试图

HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault(); 

或者是否需要拆分标头":"并取第二个字符串? 我问这是因为,维基百科说

领域的一般格式为: X - 转发,适用于:客户端1,PROXY1,Proxy2将

+1

你试过了你的代码吗? – svick 2011-06-11 15:45:17

+0

我会问同样的事情:) – 2011-06-11 16:17:34

+4

你的代码是正确的,除了我只是这样做:HttpContext.Current.Request.Headers [“X-Forwarded-For”]。Split(',')。FirstOrDefault (); – Tsar 2011-06-13 08:21:46

回答

15

,你得到的回报格式为client1,proxy1,proxy2

所以你用逗号分隔它,并得到第一个看到你的客户端的IP。

3

不要忘记,X-Forwarded-For可以包含任何客户端写入。它可以包含XSS或SQL注入。

3

如果有帮助,这是获得用户的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();