这个Invalid Host错误为什么会出现?是网络问题?还是浏览器问题?亦或是其他原因?

最近经常会有这样的报错:

clipboard.png

[2017-07-06 19:36:02] ERROR: exception 'UnexpectedValueException' with message 'Invalid Host "xxx.com, xxx.com"' in /data/www/api.mainaer/vendor/symfony/http-foundation/Request.php:1227
 > Stack trace:
 > #0 /******/vendor/symfony/http-foundation/Request.php(1036): Symfony\Component\HttpFoundation\Request->getHost()
 > #1 /******/vendor/symfony/http-foundation/Request.php(1066): Symfony\Component\HttpFoundation\Request->getHttpHost()
 > #2 /******/vendor/symfony/http-foundation/Request.php(1700): Symfony\Component\HttpFoundation\Request->getSchemeAndHttpHost()
 > #3 /******/vendor/symfony/http-foundation/Request.php(1050): Symfony\Component\HttpFoundation\Request->prepareRequestUri()
 > #4 /******/vendor/symfony/http-foundation/Request.php(1752): Symfony\Component\HttpFoundation\Request->getRequestUri()
 > #5 /******/vendor/symfony/http-foundation/Request.php(928): Symfony\Component\HttpFoundation\Request->prepareBaseUrl()
 > #6 /******/vendor/symfony/http-foundation/Request.php(1818): Symfony\Component\HttpFoundation\Request->getBaseUrl()
 > #7 /******/vendor/symfony/http-foundation/Request.php(888): Symfony\Component\HttpFoundation\Request->preparePathInfo()
 > #8 /******/vendor/illuminate/http/Request.php(121): Symfony\Component\HttpFoundation\Request->getPathInfo()
 > #9 /******/bootstrap/app.php(197): Illuminate\Http\Request->path()
 > #10 /******/public/index.php(14): require('/***...')
 > #11 /data/www/default/lumen.php(42): require('/***...')
 > #12 {main}  {"request_id":"7bb47f49b6f0bf8a40364f5b25234e4d78f8165e","url":"/dist/manifest.js?_=1499341106711","ip":"112.96.252.38","http_method":"GET","http_host":"xxx.com, xxx.com","referrer":"http://xxxx.com/yyy"}
 > 

看到Apache的日志中的User Agent是Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/13B143 UCBrowser/10.7.11.672 Mobile 也就是一个iPhone上的UC浏览器。我刚好也用iPhone,可是访问了下却没有这样的错误。

请问还有谁遇到过类似的问题?这个Invalid Host错误为什么会出现?是网络问题?还是浏览器问题?亦或是其他原因?


有人说这个是因为Symfony的匹配规则有问题,我却不这么认为:

clipboard.png

根据HTTP的RFC, 这个Host字段在我这里显然只应该是xxx.com, 然而服务器收到的确是xxx.com, xxx.com.

--- 再补充:我这个服务器用的是Apache + PHP,也有一种可能是服务器接收的请求有两个想同的Host字段(Host: xxx.com),然后被PHP给合并成一个逗号隔开的xxx.com, xxx.com了。。。(/ □ )

阅读 9.1k
1 个回答

这个是symfony的request类的问题.
你看下源代码去. 里面有些可信代理, 正则替换之类的.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题