我在Symfony的一个项目中使用bazinga地理编码器。我们在应用程序中使用了几个地理定位部分,因此我们无法使用本地IP(127.0.0.1或我们的docker IP)。我们需要一个fakeIp来处理那些地理位置。此外,我们在本地使用代理来获得https连接。
问题在于,当我们使用我们的假名重新编写ip时,symfony认为她不能信任,所以我们得到一个错误,因为重写不是来自可信代理。然后当我们将它添加到trustedProxies来告诉symfony它是一个很好的ip你可以信任她,fakeIp不再被认为是我们的IP。
symfony开始使用我的docker IP。我在互联网上做了很少的研究我认为这可能是一个解决方案,但它只能部分工作(https://symfony.com/blog/fixing-the-trusted-proxies-configuration-for-symfony-3-3)
抱歉我的英文。我希望你能理解我的prb
这是我的fakeRequest监听器的代码,没有其他修改
/**
* @var string
*/
protected $fakeIp = null;
public function __construct($fakeIp)
{
$this->fakeIp = $fakeIp;
}
public function onKernelRequest(GetResponseEvent $event)
{
if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
return;
}
if (null !== $this->fakeIp && !empty($this->fakeIp)) {
$event->getRequest()->setTrustedProxies(array($this->fakeIp));
$event->getRequest()->server->set('REMOTE_ADDR', $this->fakeIp);
}
}
public function getFakeIp()
{
return $this->fakeIp;
}