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 RFC3986。
tomcat版本升级后,请求中包含的特殊字符或中文会引起此报错。
更换此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:
原生安卓继承uniapp后执行自定义的applicaiton与activity(实现双击退出按钮监听)
Eden4J:
Vue报错Custom elements in iteration require 'v-bind:key' directives."错误解决
wxhlqy:
nodejs安装国内镜像
m0_73819591:
idea程序包javax.persistence不存在
表演系小学渣: