En Symfony 2.3 antes$this->container->get('request')->getClientIp()
sólo funciona dentro del controlador maestro solicitud. En el controlador de sub petición, siempre devuelve 127.0.0.1
. En caso de que su proyecto use sub-solicitudes con Symfony 2.2, la solución a prueba de balas es crear el oyente kernel.request
y guardar la IP de la solicitud maestra en él.
En Symfony 2.3 lo arreglaron así que para sub-solicitudes internas del IP real es empujado a la lista de servidores proxy, consulte https://github.com/symfony/symfony/commit/2f3b33a630727cbc9cf21262817240a72a8dae0c Así que hay que añadir 127.0.0.1
al parámetro de configuración trusted_proxies
para obtener IP del cliente de la solicitud de sub-solicitudes en Symfony 2.3+, pero no debe hacer esto en el alojamiento compartido por razones de seguridad.
Además, 127.0.0.1
tuvieron que ser añadido a trusted_proxies
explícitamente si se utilizó antes de Symfony 2.3.20 incorporado en la memoria caché HTTP (AppCache
en web/app.php
). Este caché intenta parecerse a un proxy inverso real y modifica algunos encabezados de la solicitud maestra. Fijo en https://github.com/symfony/symfony/commit/902efb8a84e8f0acf6a63e09afa08e3dcdd80fb9
Desde Symfony 2,4 y en 3.x la forma preferida de la petición de acceso actual es o bien utilizando request_stack
servicio
$this->container->get('request_stack')->getCurrentRequest()->getClientIp();
o inyectar Solicitud en el controlador, ver http://symfony.com/doc/current/book/controller.html#the-request-as-a-controller-argument
public function indexAction(Request $request)
{
$ip = $request->getClientIp();
}
Pero la preocupación por excluir 127.0.0.1 cuando se usa en las solicitudes secundarias aún se aplica, b ut ahora usted puede tratar de hacer referencia explícita a la petición maestro usando
$this->container->get('request_stack')->getMasterRequest()->getClientIp();
Gracias por la respuesta rápida.¿Puedo saber de qué viene $ contenedor? – VishwaKumar
Ok, funcionó esto: $ ip = $ this-> container-> get ('request') -> getClientIp(); – VishwaKumar