BeWithYou

胡搞的技术博客

  1. 首页
  2. 运维/工具
  3. 解决java程序返回HTTP505

解决java程序返回HTTP505


nginx转发给java程序的接口返回505状态码,表示“HTTP版本不受支持“,实际上大多数情况都不是这个原因,而是url里包含了没有转义的空格。 比如请求行如下: `POST /api/v2/exchange/banner?ts=1567662987906&os=android&ov=Android 6.0.1&nt=wifi&sc=574*360&sg=2e9c8d43f39452981f512e8a61a2c83e HTTP/1.1` 在`querystring`中`ov`由于某种原因里面有未转义的空格,则后端无法识别此请求行,误认为是不支持的版本。正常情况下空格应该转义成`%20`。 前端发版要审核,所以只能先在后端动手解决。说是java程序返回505,其实还是得在nginx层面改。 在对应的`location`里加上对`args`的转换即可。 ```nginx if ($args ~ '^(.*) (.*)$'){ set $args $1%20$2; } ``` PS: 这种情况一直都存在,但是nginx转发给php-fpm的请求就没有问题。猜测php-fpm针对这种情况重新加了转义,而springboot内置的tomcat没有这么吊吧。
回到顶部