【问题标题】:SSL redirect changes client IP address read from HTTPResponseSSL 重定向更改从 HTTPResponse 读取的客户端 IP 地址
【发布时间】:2018-05-21 19:59:40
【问题描述】:

我正在为在 AWS EC2 实例上运行的服务器端应用程序使用 Perfect Framework。我正在使用以下代码获取客户端 IP 地址。

open static func someapi(request: HTTPRequest, _ response: HTTPResponse) {

    var clientIP = request.remoteAddress.host }

在我在我的 EC2 实例上安装 ssl 证书并开始将传入流量重定向到端口 443 之前,这一切正常。

现在这段代码给了我服务器的 ip,我认为由于重定向,完美以某种方式认为请求来自自身。

还有其他获取客户端IP地址的方法吗?还是我必须尝试其他方法?

谢谢!

【问题讨论】:

    标签: apache vapor perfect


    【解决方案1】:

    对于为同一问题苦苦挣扎的任何人,如果存在重定向,则可以在名为“xForwardedFor”的标头字段之一中找到原始客户端 IP,如下所示:

    var clientIP = request.remoteAddress.host
    
        let forwardInfoResut = request.headers.filter { (item) -> Bool in
            item.0 == HTTPRequestHeader.Name.xForwardedFor
        }
    
        if let forwardInfo = forwardInfoResut.first {
            clientIP = forwardInfo.1
        }
    

    希望这对某人有所帮助,干杯!

    【讨论】:

      【解决方案2】:

      也许您应该在询问我们之前询问您支付支持费用的人员以及管理基础架构的人员如何工作?

      约定,http 连接在服务器以外的其他地方终止是注入一个 x-forwarded-for header。如果已经有这样的头部,中间服务器会在列表的最前面注入客户端IP地址。

      【讨论】:

      • 对不起,我是唯一一个从事所有工作的人(不幸的是,AWS 支持不是选项),我对该主题的了解有限。无论如何,谢谢,但我会继续提出这个问题,考虑到将来会有更多像我这样的人从头开始构建后端应用程序。
      猜你喜欢
      • 2018-08-07
      • 2019-01-14
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 2011-05-26
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多