Причина, почему это делается таким образом, вероятно, RFC7239
«За» параметр используется для раскрытия информации о клиенте , который инициировал запрос и последующие прокси в цепочке прокси ,
стороны клиента прокси, как кальмар может также добавить исходящий IP в заголовок X-Forwarded-For, так что если вы делаете это так, и запрос уже имеет набор заголовков, лак не хотел бы добавить, что он считает client.ip как часть поля заголовка.
Update:
«реальный IP» будет только единственным значением заголовка, если клиент уже не поставляют один - но прокси, как кальмар сделать именно это. Если вы всегда хотите IP-адрес клиента (который может быть IP-адресом непрозрачного прокси-сервера, следовательно, создание заголовка XFF) в качестве единственного значения, оставьте условие if (!req.http.x-forwarded-for)
.
Но я бы оставил только заголовок XFF и использовал пользовательское поле заголовка для использования в бэкэнд, особенно если вы планируете использовать его для управления доступом к ресурсам, что является неотъемлемой небезопасной вещью, использующей заголовок XFF.
Также обратите внимание, что заголовки HTTP могут быть установлены в javascript с использованием метода setRequestHeader().
Было бы полезно знать, какова ваша цель в отношении рекомендаций.
так что это не должно быть проблемой вообще, так как реальный ip всегда в начале, это надежное предположение? –