Ответ 1
Формат, который вы получаете в ответ, client1, proxy1, proxy2
Итак, вы разделили его на запятую и первыми увидели ip вашего клиента.
Я хочу прочитать значение X-Forwarded-For
в запросе.
Я пробовал
HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault();
в С#.
ИЛИ мне нужно разделить заголовок на ":"
и взять вторую строку?
Я спрашиваю об этом, потому что, по словам Википедии,
Общий формат поля: X-Forwarded-For: client1, proxy1, proxy2
Формат, который вы получаете в ответ, client1, proxy1, proxy2
Итак, вы разделили его на запятую и первыми увидели ip вашего клиента.
Если это помогает, это простой способ получить IP-адрес пользователя, учитывая заголовок X_FORWARDED_FOR
var forwardedFor = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
var userIpAddress = String.IsNullOrWhiteSpace(forwardedFor) ?
Request.ServerVariables["REMOTE_ADDR"] : forwardedFor.Split(',').Select(s => s.Trim()).First();
Не забывайте, что X-Forwarded-For может содержать любой клиент, который там пишет. Он может содержать XSS или SQL-инъекцию внутри.
Иногда первый может содержать один из локальных (закрытых) зарезервированных адресов, который не является полезным. Также первая позиция (позиции) открыта для подмены.
В приведенном ниже ответе предлагается идти справа налево, пока вы не нажмете на публичный адрес.
https://husobee.github.io/golang/ip-address/2015/12/17/remote-ip-go.html