在从Tomcat 7.0.50升级到Tomcat 8.5.15期间,它停止识别我的方法中的一个POST参数:我得到的不是正常的响应,而是这个消息
HTTP状态400 -糟糕的请求 型状态报告 消息所需的字符串参数“密码”不存在 Description服务器不能或不会处理请求,因为它被认为是客户端错误(例如,格式错误的请求语法、无效的请求消息框架或欺骗性请求路由)。 Apache /8.5.15
方法签名是:
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> login(
@RequestParam("password") String passwordHash,
@RequestParam("username") String loginName,
@RequestParam(value = "clientId", required = false) String clientId,
HttpServletRequest request,
HttpServletResponse response)
throws NoSuchAlgorithmException {//...我从请求中捕获了流量,如您所见,password POST参数包含在POST x-www-form-urlencoded参数中:
POST http://<masked>/Server/user/login HTTP/1.1
Host: <masked>
Connection: keep-alive
Content-Length: 270
Origin: http://<masked>
X-Requested-With: ShockwaveFlash/26.0.0.131
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: http://<masked>
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,ru;q=0.6,he;q=0.4
Cookie: <masked>
noremember=true&password=C9TUq%2BYMIbeoW%2ByfoSCt9QJoOnmSGR8BqRKdOjufjE7%2FoHUDpPf3FHSvCUbZu4EBSKkJV2ryGs1Q77D7SFbBKZZ3joWcMTN6aTsgmPsOdW0Md1qcOkB4w4L3F53XZRlKUp2RaxCjoE0AIr%2B0WLomGFSrn8u8iTf2p4Z7Mo6ZKPA%3D&username=test%40example%2Ecom&clientId=1858390758%2E1481631908奇怪的是,它在Tomcat 7下工作得很好。
怎么才能帮上忙呢?
发布于 2017-06-22 11:13:49
最终找到了原因。我在以前的Tomcat 7.0.50配置中在server.xml的Connector中使用了Connector参数,并将它复制到了新的配置中,但是由于Tomcat版本7.0.63 maxPostSize="0"并不意味着无限,而是“空”,所以应该使用maxPostSize="-1"。
maxPostSize的值零的含义也被更改为零的限制,而不是没有限制,以使它与maxSavePostSize对齐,并且更加直观。(markt) 7.0.63变化率g
https://stackoverflow.com/questions/44670164
复制相似问题