Request.ServerVariables [“HTTP_X_FORWARDED_FOR”]和Request.Headers [“X-Forwarded-For”]之间有区别吗?

时间:2017-05-26 16:32:47

标签: asp.net

在ASP.NET中,它们之间有区别吗?

  1. HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
  2. HttpContext.Current.Request.Headers["X-Forwarded-For"]
  3. Request.Headers对我来说更清楚,但我通常会看到使用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]的示例代码(以及Request.ServerVariables["REMOTE_ADDR"]),我不明白为什么。

1 个答案:

答案 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_FORREMOTE_ADDR之间的区别仅在您和客户端之间存在代理服务器时才会显现。在这些情况下,REMOTE_ADDR将具有代理服务器的地址,HTTP_X_FORWARDED_FOR将具有最终客户端的地址。

如果没有代理,则HTTP_X_FORWARDED_FOR将为空,REMOTE_ADDR将拥有最终客户的地址。