Heroku 路由器状态 400 原因 = "bad header" 代码 = H26 在连接标头设置为升级的请求上



我正在处理一个奇怪的问题,当连接头设置为"upgrade"时,向heroku上托管的express.js API发出的https请求返回状态代码400。

这就是heroku 中的日志

2022-04-04T03:44:57.958428+00:00 heroku[router]: cause="bad header" at=error code=H26 desc="Request Error" method=GET path="/v1/get?id=10" host=ulleo-api.herokuapp.com request_id=a38920e7-4ab5-4f7f-825c-0c90199af490 fwd="127.0.0.1,xxx.xxx.xxx.xx" dyno= connect= service= status=400 bytes= protocol=https

我认为我不可能更改标头,因为它是由浏览器在nuxt SSR http请求期间设置的,由于连接标头被设置为保持活动,因此请求在浏览器中运行良好,但出于某种原因,在执行SSR时,nuxt将其设置为升级,这会破坏heroku路由器。

知道什么能解决这个问题吗?

我是用Axios发出请求的,当我尝试将连接标头设置为"保持活动"时,它会抛出一个错误,说这是一个不安全的标头,即客户端控制标头。

我尝试过用keep-alive值手动覆盖连接头,但我在设置不安全的头时遇到了一个错误,经过研究,这是因为这个头由客户端控制

在联系Heroku支持人员后,他们询问Upgrade标头的值是多少,我看了一眼,发现它没有被设置,在尝试将其设置为HTTP/1.1后,请求仍然失败,但在将它设置为随机值(如'none''xyz'(后,请求似乎可以正常工作。

我想设置一个无效的Upgrade头值会使Heroku忽略连接升级请求。

最新更新