【问题标题】:What's the variable HTTP_X_FORWARDED_HOST in the @env hash in middleware?中间件中@env 哈希中的变量 HTTP_X_FORWARDED_HOST 是什么?
【发布时间】:2013-07-01 18:38:45
【问题描述】:

在 Rack 中间件过滤器中,我知道调用方法需要一个 env 哈希变量。我正在查看某人的 Rack 中间件代码,我看到了

 env['HTTP_X_FORWARDED_HOST']

谁能解释一下 HTTP_X_FORWARDED_HOST 是什么意思?是发起请求的主机吗?

【问题讨论】:

    标签: ruby-on-rails rack rack-middleware


    【解决方案1】:

    我知道这是一个非常古老的问题,但是当浏览器和您的服务器之间存在代理(或多个代理)时,会使用 HTTP_X_FORWARDED_HOST。如果您有此设置:

    End User -> Proxy A -> Proxy B -> Server
    

    然后,当最终用户发出请求(带有 Host 标头)时,代理 A 将接收它。它将设置自己的主机,然后在向代理 B 发出请求之前将最终用户主机放入 X-Forwarded-Host。代理 B 将执行相同操作,将代理 A 的主机附加到 X-Forwarded-Host(因此标题看起来像 EndUserHost,ProxyAHost) 并设置自己的主机。然后,您的服务器将收到一个带有代理 B 的 Host 标头的请求,以及一个 X-Forwarded-Host 标头,其值类似于 "EndUserHost,ProxyAHost"

    一些信息:http://hustoknow.blogspot.com/2011/02/x-forwarded-for-vs-httpxforwardedhost.html

    需要注意的一点:最终用户可以欺骗 X-Forwarded-Host,因此您必须小心对其做出的假设。

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2019-09-09
      • 2018-08-23
      • 2013-03-21
      • 2012-12-19
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      相关资源
      最近更新 更多