Tomcat 8.5:所需的字符串参数“ ...”不存在

德米特里·金茨堡

从Tomcat 7.0.50升级到Tomcat 8.5.15的过程中,它停止识别我的方法之一的POST参数之一:我得到的不是正常响应,而是此消息

HTTP状态[400] – [错误请求]

类型状态报告

消息必需的字符串参数“密码”不存在

描述由于某些东西被认为是客户端错误(例如,格式不正确的请求语法,无效的请求消息框架或欺骗性的请求路由),服务器无法或不会处理请求。

Apache Tomcat / 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 {//...

我已经从请求中捕获了流量,并且您可以看到,passwordPOST参数包含在POSTx-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下完美运行

如何提供帮助?

德米特里·金茨堡

最终找到了原因。我有maxPostSize="0"参数server.xmlConnector在我的Tomcat 7.0.50的旧配置,我已经将它复制到新的配置,但由于Tomcat的版本7.0.63maxPostSize="0"并不意味着无限的,但‘空’,所以maxPostSize="-1"应使用

maxPostSize的零值含义也已更改为零限制,而不是无限制以使其与maxSavePostSize对齐并更加直观。(市场)

Tomcat 7.0.63更新日志

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MissingServletRequestParameterException:所需的字符串参数“ cinClient”不存在

所需的字符串参数“firstdropdown”不存在

所需的字符串参数“文本”不存在

Tomcat:所需的请求部分“文件”不存在

Angular 8 + Spring Boot:不存在必需的String参数

HTTP状态400-所需的字符串参数'walletName'不存在

Spring Boot REST - 所需的字符串参数不存在

弹簧控制器所需的字符串参数不存在

异常:org.springframework.web.bind.MissingServletRequestParameterException:所需的字符串参数“ params”不存在

表单提交400所需的字符串参数不存在

HTTP 状态 400 - 所需的字符串参数“userid”不存在

必需的字符串参数“x”为不存在

必需的字符串参数“ email”不存在

所需的原型不存在

“ X”参数不存在

尝试将JSON发布到方法最终导致此错误-所需的字符串参数'name'不存在

如何从Java脚本函数中调用spring服务(RequestParam)(错误400:所需的字符串参数'flag'不存在)

Laravel 8: ReflectionException 函数() 不存在

Laravel 8:目标类别不存在

该位置[5]的参数不存在;

所需的防伪cookie“ __RequestVerificationToken”不存在。

所需的防伪 cookie“__RequestVerificationToken”不存在

检查列表中是否不存在字符串

如果属性不存在,则显示空字符串

symfony 约束,数组字段不存在或字符串

属性“ matchAll”在“字符串”类型上不存在

类型“字符串”上不存在属性“目标”

类型“字符串”不存在属性“登录”

Swiftmailer 中不存在的参数