SpringBoot1.X和2.X版本配置内置tomcat,处理错误The valid characters are defined in RFC 7230 and RFC 3986

最新推荐文章于 2023-06-25 09:02:23 发布
最新推荐文章于 2023-06-25 09:02:23 发布

异常一: Invalid character found in method name. HTTP method names must be token
原因: 产生这个问题的原因是页面表单提交了大量的数据,而这些数据量可能超过了Tomcat 定义的Header头内容,只要设置一下Tomcat的maxHttpHeaderSize

解决:springBoot配置:

server:
  address: 0.0.0.0
  port: 8080
  max-http-header-size: 10240000
  tomcat:
    max-http-header-size: 10240000
    max-http-post-size: 10240000

如果使用外部tomcat,则在tomcat的server.xml中添加

maxHttpHeaderSize="1024000"

异常二: 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)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : @ & = + $ , / ? # [ ] ) (26*2+10+4+18=84)这84个字符,请求中出现了{}大括号或者[],所以tomcat报错。

设置RelaxedQueryChars允许此字符(建议),

设置requestTargetAllows选项(Tomcat 8.5中不推荐)。

您可以降级为旧版本之一(不推荐-安全性)。

根据 https://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html, requestTargetAllowis设置允许不受欢迎字符。对我来说,这里提出的其他解决办法也不起作用。根据Tomcat文档,我找到了一种方法来设置松弛的QueryChars属性

解决问题如下:springBoot2

* 解决异常信息:  *  java.lang.IllegalArgumentException:  *      Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986  * @return @Bean public ConfigurableServletWebServerFactory webServerFactory() {     TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();     factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {         @Override         public void customize(Connector connector) {             connector.setProperty("relaxedQueryChars", "|{}[]");     return factory;

springBoot1配置如下

@Configuration
public class SystemConfig {
    public EmbeddedServletContainerFactory webServerFactory() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                connector.setProperty("relaxedQueryChars", "|[]{}");
        return factory;

如果使用外部tomcat,则在tomcat的server.xml中添加(该方法是实测过的)

relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>"

参考:https://blog.csdn.net/baiHoo_chen/article/details/85221852#commentBox

SpringBoot1.X和2.X版本配置内置tomcat,处理错误The valid characters are defined in RFC 7230 and RFC 3986 异常一:Invalid character found in method name. HTTP method names must be token原因:产生这个问题的原因是页面表单提交了大量的数据,而这些数据量可能超过了Tomcat 定义的Header头内容,只要设置一下Tomcat的maxHttpHeaderSize解决:springBoot配置:server: addr...
Invalid character found in the request target.The valid characters are defined in RFC 7230 and RFC3986tomcat版本升级后,请求中包含的特殊字符或中文会引起此报错。 更换此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.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283)     at org.a
解决spring boot请求 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 错误 问题出在 高版本tomcat会对请求头进行过滤 我的项目使用的springboot版本是2.2.5版本内置tomcat 版本是9.0.31。 解决方法①(推荐) 新增一个配置类 设置tomcat请求路径包含“[]\” 等特殊字符不拦截 代码如下: @Configurati
前言:我们都知道spring boot是内置tomcat服务器,我们怎么样修改这个内置服务器的配置信息呢?其实非常简单,下面带大家看看怎样进行配置: 1.spring boot默认端口号是8080,如果要修改端口的话,只需要修改application.properties文件,在其中加入   例如: server.port=8081 2.在正常的项目中,项目路径都是localhost:80
最近公司在做一些内部的小型Web应用时, 为了提高开发效率决定使用SpringBoot, 这货自带Servlet容器, 你在开发Web应用时可以直接在本地像运行控制台应用一样启动,省去了重复部署的时间;配置上相比于SpringMVC也是有了大大的简化。SpringBoot的应用可以直接打成一个可运行的jar包, 你无需发愁为了不同应用要部署多个Tomcat。但是实际部署时你会发 网上现存的大部分方法是通过修改catalina.jar里面的ServerInfo.properties配置文件中的配置项来进行版本隐藏,这样的方式未免太过麻烦了点,于是通过研究发现了另一种比较简单的修复方案,然后发现网上好像并没有相关的记录,于是想在此分享一下。 具体配置方法为: 在conf/server.xml配置文件中的<Host>.. <Connector port="5599" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" rel... public class WebConfig { @Bean(name="webServerFactory") public ServletWebServerFactory webServerFactory() { TomcatServletWebServerFacto...
springboot中如何在url中,参数可以是一些符号 SpringBoot 2.0.0 以上都采用内置tomcat8.0以上版本,而tomcat8.0以上版本遵从RFC规范添加了对Url的特殊字符的限制, url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : @ & = + $ , / ? # [ ] ) (262+10+4+18=84)这84个字符, 请求中出现了{}大括号或者[],所以tomcat报错。设置Relaxe
springboot版本: 2.1.5 最近使用springboot搭建了一个App后台服务的项目,开发接口的时候在本机使用postman工具做请求测试,请求返回一直很正常,但是在前端开发使用h5请求后台服务的时候,前台请求400,浏览器提示请求跨域 但是我在提供接口请求的入口处做了跨域处理的,如图: 所以我考虑可能不是跨域问题,查看ide控制台发现每次请求都会报如下错误: java....
//springboot配置tomcat @Component public class EmbeddedTomcatConfig implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> { @Override public void customiz...
之前,在实习的时候,有个实现文件下载的功能,前端传递文件路径给后端。由于,在公司,系统是部署在linux上运行的,文件路径分隔符为"/",而高版本Tomcat本身不会拦截"/"。但是,当我自己在学校用windows来实现的时候,由于在windows系统上,文件路径分隔符为"\",这个时候Tomcat默认是会拦截反斜杠的。所以,为了解决这个问题,我们需要进行手动配置不拦截请求中的某些特殊字符。 在SpringBoot中,我们可以进行如下配置。这里,我只是针对了自己的项目进行配置不拦截"\",小伙伴们可以根据
Ubuntu18.04_64位系统Package docker-ce is not available, but is referred to by another package. Vincew2022: sources.list.d文件是空的,没有docker.list这个文件啊 原生安卓继承uniapp后执行自定义的applicaiton与activity(实现双击退出按钮监听) Eden4J: 大佬,如果我想在uniApp开发的这个应用卸载前发广播出来应该怎么做呢? Vue报错Custom elements in iteration require 'v-bind:key' directives."错误解决 wxhlqy: up,这个怎么确定 key后面应该跟什么呢? vue.js官网的树例子这边报错: <TreeItem class="item" v-for="model in model.children" :model="model"></TreeItem> nodejs安装国内镜像 m0_73819591: 为什么我查看验证以后就没有了呀? idea程序包javax.persistence不存在 表演系小学渣: 没有的话在gradle功能栏刷新一下