Перенаправление SSL изменяет IP-адрес клиента, считанный из HTTPResponse - PullRequest
0 голосов
/ 21 мая 2018

Я использую Perfect Framework для моего серверного приложения, работающего на экземпляре AWS EC2.Я использую следующий код для получения IP-адреса клиента.

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

    var clientIP = request.remoteAddress.host }

Это работало нормально, пока я не установил ssl-сертификат на свой экземпляр EC2 и не начал перенаправлять входящий трафик на порт 443.

СейчасЭтот код дает мне IP-адрес моего сервера, я думаю, из-за перенаправления, Perfect почему-то думаю, что запрос приходит сам по себе.

Есть ли какой-либо другой способ получить IP-адрес клиента?Или я должен попробовать что-то еще?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Может быть, вам следует спросить людей, которым вы платите за поддержку, и кто управляет инфраструктурой, как она работает, прежде чем спрашивать нас?

Соглашение, при котором соединение http прерывается в другом месте, чем сервер, чтобы ввести x-forwarded-for заголовок .Если такой заголовок уже существует, промежуточный сервер вводит IP-адрес клиента в начало списка.

0 голосов
/ 21 мая 2018

Для тех, кто борется за ту же проблему, оригинальный ip клиента может быть найден в одном из полей заголовка «xForwardedFor», если есть перенаправление, например:

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
    }

Надеюсь, это кому-нибудь поможетура!

...