1

在 Android 上使用 Chrome 的流量保护程序访问我的 Symfony 网站会生成错误 500。

这是日志

[2017-04-06 18:56:23] request.ERROR: Uncaught PHP Exception
Symfony\Component\HttpKernel\Exception\BadRequestHttpException:
"The request headers contain conflicting information regarding the origin of this request." at /home/myapp/app/bootstrap.php.cache line 3184
{"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\BadRequestHttpException(code: 0): The request headers contain conflicting information regarding the origin of this request. at /home/myapp/app/bootstrap.php.cache:3184, Symfony\\Component\\HttpFoundation\\Exception\\ConflictingHeadersException(code: 0): The request has both a trusted Forwarded header and a trusted Client IP header, conflicting with each other with regards to the originating IP addresses of the request. This is the result of a misconfiguration. You should either configure your proxy only to send one of these headers, or configure Symfony to distrust one of them. at /home/myapp/app/bootstrap.php.cache:788)"} []

据我了解,Chrome 的数据保护程序在我的应用程序压缩代码和图像之前充当反向代理。

我阅读了这篇文档,了解如何在 Symfony 应用程序前使用反向代理

问题是我没有找到任何关于 IP Chrome 数据保护程序代理正在使用的文档。

感谢帮助!

4

2 回答 2

1

关键信息在这里:

该请求同时具有受信任的转发标头和受信任的客户端 IP 标头

我建议修复该问题,或者 - 如果您没有权限 - 按照文档中的说明禁用冲突的标头:

您可能希望在 web/ 目录中的 app.php 或 app_dev.php 中执行此操作。在 $request 创建之后。

于 2017-04-09T15:52:08.490 回答
0

这个错误也会影响 Drupal 8.3(也可能是 8.0/1/2)。而且您不能真正相信 FORWARDED 标头,因为它可以像任何其他标头一样被伪造,并且您不能(AFAIK)列出从中接受它的代理地址。因此,每当用户启用 Chrome 数据保护程序时,您基本上就无法获取他们的 IP,因为您不能依赖 FORWARDED 标头。

信任 X_FORWARDED_FOR 的默认行为在您附带受信任的反向代理列表(即您可以控制的代理)时起作用。

如果法律强制您跟踪任何用户生成的内容的用户 IP(如在法国),这可能是一个问题。

于 2017-07-18T10:05:45.507 回答