Symfony 3中http标头之间的冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony 3中http标头之间的冲突相关的知识,希望对你有一定的参考价值。

我有一个使用Symfony 3.2的应用程序,从昨天开始运行良好。当我尝试访问应用程序时,我有一个BadRequestHttpException,它告诉我在我的请求中有两个http标头冲突:FORWARDED和X_FORWARDED_FOR。

Symfony\Component\HttpKernel\Exception\BadRequestHttpException (code: 
0):The request headers contain conflicting information regarding the origin 
of this request. at /home/biotekagee/gdpl/var/cache/prod/classes.php:4630, 

Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException (code: 
0): The request has both a trusted "FORWARDED" header and a trusted 
"X_FORWARDED_FOR" header, conflicting with each other. You should either 
configure your proxy to remove one of them, or configure your project to 
distrust the offending one. at 
/home/biotekagee/gdpl/var/bootstrap.php.cache:1297

我注意到的事情:

  • 问题出现在生产环境中。使用dev(app_dev.php)时一切都很好
  • 所以我试着在app.php中找到问题,当我评论线$kernel = new AppCache($kernel)问题解决了。我想那个问题来自HttpCache
  • 我没有使用任何代理
  • 清除缓存根本没有用

我已经和Symfony合作了不到一年,我还是一个菜鸟,这个错误确实让我很紧张。我希望有人能够帮助我。

答案

我首先在app.php中添加了这一行来解决问题

Request::setTrustedHeaderName(Request::HEADER_FORWARDED, null);

不是一个好的解决方案...然后,我从Symfony 3.2更新到Symfony 3.3,问题似乎已经消失。

以上是关于Symfony 3中http标头之间的冲突的主要内容,如果未能解决你的问题,请参考以下文章

Cors 中启用的所有标头,WebConfig 和 WebApiConfig 之间没有冲突,为啥我的 WebApi 返回 405 错误?

Symfony 3.1 作曲家冲突

symfony 不在标头中获取令牌

如何修复“HTTP 标头中 CRLF 序列的不正确中和('HTTP 响应拆分')”

Symfony 3.4.4 + MariaDB 10.0.1 - SQLSTATE [42000]:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节

nginx 在浏览器中的多个 X-Frame-Options 标头冲突