记录一次错误:springboot项目 Invalid character found in method name. HTTP method names must be tokens

本文解决了在使用SSL证书并打包成jar包部署到服务器后,遇到的HTTPS请求头大小限制问题。通过在application.properties文件中增加server.tomcat.max-http-form-post-size和server.max-http-header-size两个参数设置为32768,成功避免了错误的发生。

错误的信息我忘记截图了 现在弄好了之后来记录一下
配置了SSL证书后 打包成jar包放到服务器上后运行发现还是出错;


正如网上所说:https换成http就可以了 。但是必须得用https怎么办?
在网上查了半天 加了这个也没用maxHttpHeaderSize;
说实话还是请求头的问题
我在项目 application.properties 中加了这两个 在打包进去 就不报错了

#请求头大小
server.tomcat.max-http-form-post-size=32768
server.max-http-header-size=32768

在这里插入图片描述

<think>好的,我现在需要解决Tomcat启动时遇到的java.lang.IllegalArgumentException: Invalid character found in method name这个错误。首先,我得理解这个异常的原因是什么。根据用户提供的引用内容,这个错误通常与HTTP请求头中的非法字符有关。引用[1]提到这可能是因为请求头中包含非标准字符,比如中文符号或者特殊字符,导致Tomcat无法正确解析方法名。引用[2]和[3]也提到了类似的情况,比如使用JSON格式请求时配置不当,或者在URL中使用了特殊字符。 接下来,我需要整理可能的解决方案。根据引用内容,有几个方法可以尝试。首先是修改Tomcat的配置,比如在conf/catalina.properties中添加允许的特殊字符,如引用[1]和[3]所建议的,添加tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}等配置。这可能是因为Tomcat默认对允许的字符有严格限制,添加这些配置可以放宽限制,允许某些特殊字符出现在请求中。 另一个方法是检查端口配置,引用[4]提到更换端口号解决了问题。这可能是由于端口冲突或其他配置问题导致Tomcat无法正确启动,从而引发异常。所以,我需要检查应用的端口设置,确保没有冲突,并且端口号在合法范围内。 此外,用户提到的引用[2]中的情况涉及Postman调用时的请求体问题,可能请求头或JSON格式不正确导致解析失败。因此,检查客户端发送的请求是否符合规范,特别是方法名和头信息是否有非法字符,也是必要的步骤。 最后,可能需要检查应用代码中的URL路径和处理逻辑,确保没有在方法名或路径中使用非法字符。比如,检查是否有误将请求体参数放在URL中,或者URL编码不正确的情况。 总结起来,解决方案应该包括配置Tomcat允许特殊字符、检查端口配置、验证客户端请求的合法性,以及确保代码中URL处理的正确性。需要逐步尝试这些方法,找到具体导致异常的原因,并针对性解决。</think>针对Tomcat启动时出现的`java.lang.IllegalArgumentException: Invalid character found in method name`异常,以下是分步解决方案: --- ### **原因分析** 此异常通常由以下原因导致: 1. **HTTP请求头包含非法字符**:例如中文符号、特殊符号(如`{}|`)或未编码的空格[^1][^2]。 2. **端口冲突或配置错误**:端口被占用或配置不当可能间接引发解析问题[^4]。 3. **客户端请求格式错误**:如未正确设置请求头或请求体(如JSON格式错误)[^2]。 --- ### **解决方案** #### **1. 修改Tomcat配置(推荐)** 在`conf/catalina.properties`文件中添加以下配置,放宽Tomcat对特殊字符的限制: ```properties tomcat.util.http.parser.HttpParser.requestTargetAllow=|{} org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true ``` 此配置允许请求中包含`|`、`{`、`}`等字符[^1][^3]。 --- #### **2. 检查端口配置** - 确保`server.port`未被占用(如8080、8005等)。 - 在`application.properties`中更换端口号测试: ```properties server.port=8081 ``` 若更换端口后问题消失,可能是原端口被占用或存在冲突。 --- #### **3. 验证客户端请求** - **检查请求头**:确保未包含中文符号或未编码的特殊字符。 - **规范JSON格式**:若使用`@RequestBody`接收参数,需确保请求体为合法JSON,且请求头包含`Content-Type: application/json`。 - **使用Postman测试时**:选择`raw`格式并明确设置JSON类型。 --- #### **4. 代码排查** - 检查URL路径是否包含非法字符(如未编码的空格或符号)。 - 确保`@PostMapping`、`@RequestBody`等注解使用正确,且参数绑定无误[^2]。 --- ### **总结** 建议按以下顺序操作: 1. **优先修改Tomcat配置**(适用性最广)。 2. **更换端口号测试**(快速验证是否配置问题)。 3. **检查客户端请求格式**(针对具体业务场景)[^2]。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值