Как получить IP-адрес запроса на запрос SSL - PullRequest
0 голосов
/ 17 ноября 2010

У меня есть сервис, который работает в Amazon Ec2. Служба предоставляет как конечную точку http, так и конечную точку https. Я делаю некоторый гео поиск на IP-адресе пользователя, когда я регистрирую данные. Все отлично работает на запросы, поступающие в конечную точку http. Мне нужно захватить заголовок X-Forwarded-For, чтобы я не брал UP-адрес Amazon Load Balancer и всегда мог получить то, что мне нужно. Однако при запросах, поступающих на конечную точку https, все IP-адреса совпадают.

Чтобы получить IP-адрес, я использую следующий код C #:

    public static string FetchClientIp(HttpRequest req)
    {
        var value = req.Headers["X-Forwarded-For"];
        return string.IsNullOrEmpty(value) ? req.UserHostAddress : value;
    }

Я не могу найти что-то еще, что мне нужно сделать, что конкретно относится к запросам https, поэтому я надеюсь, что кто-то здесь сталкивался с этим раньше. Я собираюсь провести тест на это, чтобы попытаться лучше изолировать проблему.

Спасибо

1 Ответ

0 голосов
/ 01 сентября 2011

Зависит от того, как настроен ELB.

Если вы прекращаете SSL на ELB ( новая функция на октябрь 2010 ), тогда IP-адрес клиента будетв «X-Forwarded-For».

HttpContext.Current.Request.Headers["X-Forwarded-For"]

Похоже, что вы прекращаете SSL на своих веб-серверах, тогда ELB не может расшифровать трафик и добавить заголовок «X-Forwarded-For»на запрос HTTP.Таким образом, IP-адрес клиента в заголовке «REMOTE_ADDR» (который является заголовком, возвращаемым HttpRequest.UserHostAddress) является IP-адресом последнего прыжка - в этом случае внутренний IP-адрес ELB.

Keep inпомните, что «X-Forwared-For» может содержать несколько IP-адресов, как описано в http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/index.html?SvcIntro.html#X-Forwarded-For.. В этом случае вас, вероятно, больше всего интересует первый из перечисленных адресов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...