在ASP.NET中,它们之间有区别吗?
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
HttpContext.Current.Request.Headers["X-Forwarded-For"]
Request.Headers对我来说更清楚,但我通常会看到使用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
的示例代码(以及Request.ServerVariables["REMOTE_ADDR"]
),我不明白为什么。
答案 0 :(得分:5)
Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
和Request.Headers["X-Forwarded-For"]
之间没有区别。
以" HTTP _"开头的IIS Server Variables的文档说:"存储在标题中的值。"
所以Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
只返回X_Forwarded_For
标题。没别了。
HTTP_X_FORWARDED_FOR
和REMOTE_ADDR
之间的区别仅在您和客户端之间存在代理服务器时才会显现。在这些情况下,REMOTE_ADDR
将具有代理服务器的地址,HTTP_X_FORWARDED_FOR
将具有最终客户端的地址。
如果没有代理,则HTTP_X_FORWARDED_FOR
将为空,REMOTE_ADDR
将拥有最终客户的地址。