iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >springboot中报错Invalidcharacterfoundintherequest的解决
  • 536
分享到

springboot中报错Invalidcharacterfoundintherequest的解决

2024-04-02 19:04:59 536人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录解决Invalid character found in the request问题原因SpringBoot项目报错问题原因有两种解决方法解决Invalid character

解决Invalid character found in the request问题

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

原因

springBoot 2.0.0 以上都采用内置Tomcat8.0以上版本,而tomcat8.0以上版本遵从RFC规范添加了对Url的特殊字符的限制,url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : @ & = + $ , / ? # [ ] ) (262+10+4+18=84)这84个字符,请求中出现了{}大括号或者[],所以tomcat报错。

设置RelaxedQueryChars允许此字符(建议),设置requestTargetAllows选项(Tomcat 8.5中不推荐)。

根据Tomcat文档,下面提供一种方法来设置松弛的QueryChars属性*

在启动类中添加

    @Bean
    public ConfigurableServletWEBServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                connector.setProperty("relaxedQueryChars", "|{}[]");
            }
        });
        return factory;
    }

springboot项目报错问题

java.lang.IllegalArgumentException:Invalid character found in the request target.

原因

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

高版本tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

springboot默认集成了tomcat,tomcat然后当你前端发送请求,请求参数中有保留的特殊字符时,就会报如下错

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
        at org.apache.coyote.Http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:472)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:683)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
        at org.apache.tomcat.util.net.NIOEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

有两种解决方法

  • 一种降低tomcat版本(不建议),这里就不写了
  • 另一种是在SpringBoot中增加tomcat配置

在config中新建一个TomcatConfig类

@Configuration
public class TomcatConfig {
    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}

然后重启项目测试,问题解决

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springboot中报错Invalidcharacterfoundintherequest的解决

本文链接: https://www.lsjlt.com/news/168769.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot中报错Invalidcharacterfoundintherequest的解决
    目录解决Invalid character found in the request问题原因springboot项目报错问题原因有两种解决方法解决Invalid character ...
    99+
    2022-11-13
  • springboot中entityManagerFactory报错的解决方法
    今天给大家介绍一下springboot中entityManagerFactory报错的解决方法。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。新建springb...
    99+
    2023-06-26
  • 解决SpringBoot中@Email报错问题
    JSR303校验相关 现象:在springboot中使用@Email注解进行数据校验时,报没有该注解的错误。 解决方法: 在pom.xml中加该配置 <dependenc...
    99+
    2022-11-12
  • SpringBoot启动yaml报错的解决
    SpringBoot启动yaml报错 报错找不到org.yaml里的一个方法 10:45:54.742 [main] ERROR org.springframework.boot...
    99+
    2022-11-12
  • 解决springboot依赖包中报错unknown的问题
    目录springboot依赖包中报错unknown1、先说说版本吧2、问题描述3、找到redis的jar版本4、分享一个小技巧springboot项目报错UnknownErrorsp...
    99+
    2022-11-13
  • springboot中的pom文件project报错怎么解决
    这篇“springboot中的pom文件project报错怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“spring...
    99+
    2023-06-26
  • springboot 使用logback启动报警报错的解决
    springboot logback启动报警报错 报错信息如下: 16:06:07,484 |-INFO in ch.qos.logback.classic.LoggerCont...
    99+
    2022-11-12
  • Springboot中@ConfigurationProperties注解出现报错如何解决
    今天就跟大家聊聊有关Springboot中@ConfigurationProperties注解出现报错如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。注解报错:1.我们需要把j...
    99+
    2023-06-05
  • SpringBoot整合thymeleaf 报错的解决方案
    近日 在springboot项目中使用thymeleaf时,莫名报了以下错误: 在网上查找文章明白了报错的原因,这是由于如果使用thymeleaf 为模板,那么解析时就要求html...
    99+
    2022-11-12
  • 解决SpringBoot运行Test时报错:SpringBoot Unable to find
    目录SpringBoot运行Test时报错错误详情解决办法SpringBootTest单元测试报错SpringBoot运行Test时报错 运行Test时的报错信息:SpringBoo...
    99+
    2022-11-12
  • springboot集成springCloud中gateway时启动报错的解决
    在项目中引入springcloud中的gateway时报以下错误 Description: Parameter 0 of method modifyRequestBodyGatew...
    99+
    2022-11-12
  • springboot整合freemarker报错怎么解决
    这篇文章主要讲解了“springboot整合freemarker报错怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot整合freemarker报错怎么解决”吧!spr...
    99+
    2023-06-30
  • springboot读取application.yml报错怎么解决
    今天小编给大家分享一下springboot读取application.yml报错怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2023-07-02
  • Springboot FeignClient调用报错怎么解决
    这篇文章主要讲解了“Springboot FeignClient调用报错怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Springboot FeignClient...
    99+
    2023-06-22
  • springboot整合log4j报错怎么解决
    这篇文章主要介绍“springboot整合log4j报错怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot整合log4j报错怎么解决”文章能帮助大家解决问题。1、依赖添加&n...
    99+
    2023-06-29
  • springBoot集成Elasticsearch 报错 Health check failed的解决
    springBoot集成Elasticsearch 报错 Health check failed 今天集成Elasticsearch 时启动报错 报错信息如下: 2018-11-...
    99+
    2022-11-12
  • 新建springboot项目时,entityManagerFactory报错的解决
    目录新建springboot项目entityManagerFactory报错解决办法spring生成EntityManagerFactory三种方式1.LocalEntityMana...
    99+
    2022-11-12
  • 解决springboot+activemq启动报注解错误的问题
    springboot+activemq启动报注解错误 Description: Field jmsMessagingTemplate in com.haozz.demo.mq.P...
    99+
    2022-11-12
  • 如何解决springboot依赖包中报错unknown的问题
    这篇文章给大家分享的是有关如何解决springboot依赖包中报错unknown的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。springboot依赖包中报错unknown1、先说说版本吧springboo...
    99+
    2023-06-29
  • springboot读取application.yml报错问题及解决
    目录springboot读取application.yml报错错误信息如下@Value读取Application.yml为null项目需求解决办法springboot读取applic...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作