$_SERVER['HTTP_X_FORWARDED_PROTO'] = 'https'; $t->is($request->getUriPrefix(), 'https://symfony-project.org:8043', '->getUriPrefix() uses the configured port on secure requests forwarded as non-secure requests'); $request->resetPathInfoArray(); // ->getRemoteAddress() $t->diag('->getRemoteAddress()'); $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $t->is($request->getRemoteAddress(), '127.0.0.1', '->getRemoteAddress() returns the remote address'); // ->getForwardedFor() $t->diag('->getForwardedFor()'); $t->is($request->getForwardedFor(), null, '->getForwardedFor() returns null if the request was not forwarded.'); $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.0.0.1, 10.0.0.2'; $t->is_deeply($request->getForwardedFor(), array('10.0.0.1', '10.0.0.2'), '->getForwardedFor() returns the value from HTTP_X_FORWARDED_FOR'); // ->getClientIp() $t->diag('->getClientIp()'); $_SERVER['HTTP_CLIENT_IP'] = '127.1.1.1'; $t->is($request->getClientIp(), '127.1.1.1', '->getClientIp() returns the value from HTTP_CLIENT_IP if it exists'); unset($_SERVER['HTTP_CLIENT_IP']); $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.0.0.1, 10.0.0.2'; $t->is($request->getClientIp(), '10.0.0.1', '->getClientIp() returns the first HTTP_X_FORWARDED_FOR if it exists'); unset($_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['HTTP_CLIENT_IP'] = '127.1.1.1'; $t->is($request->getClientIp(false), '127.0.0.1', '->getClientIp() returns the remote address even if HTTP_CLIENT_IP exists when "proxy" argument is set to false'); unset($_SERVER['HTTP_CLIENT_IP']); $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.0.0.1, 10.0.0.2'; $t->is($request->getClientIp(false), '127.0.0.1', '->getClientIp() returns the remote address even if HTTP_X_FORWARDED_FOR exists when "proxy" argument is set to false'); unset($_SERVER['HTTP_X_FORWARDED_FOR']); $t->is($request->getClientIp(false), '127.0.0.1', '->getClientIp() returns remote address by default'); $request->setOption('trust_proxy', false); $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.0.0.1, 10.0.0.2'; $t->is($request->getClientIp(), '127.0.0.1', '->getClientIp() returns the remote address even if HTTP_X_FORWARDED_FOR exists when "trust_proxy" is set ot false'); $request->setOption('trust_proxy', true);