我是靠谱客的博主 体贴钥匙,最近开发中收集的这篇文章主要介绍解决SpringBootThe 报错valid characters are defined in RFC 7230 and RFC 3986,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这个问题是在日常开发中遇到的,排查发现是前端产品在发送post请求的时候,自动把参数拼接到url后面(有点坑),在包含特殊字符的时候就会导致请求报错,理论上不允许的特殊字符如下:
在这里插入图片描述
项目上线在即,来不及修改前端产品,只能暂时后端兼容。这边记录一下解决方案。
针对这个问题,通过查阅资料及实测得到了有以下几个解决方案,供各位参考:
1.去除url后面的特殊字符(当前应用场景不适合)
2.改成post请求(针对我的情况也不满足)
3.更换springboot版本,低版本的内置tomcat是没有对请求头做严格校验的,但是这样可能会存在一些其他的风险,不太建议
4.修改HttpParser 源码(这个方案是在网上搜到的,没有实践)

5.将允许的特殊字符添加到启动类,如下(最终采用的方法)

@Bean
	public ConfigurableServletWebServerFactory webServerFactory() {
		TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
		factory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "|{}[]\"));
		return factory;
	}

最后

以上就是体贴钥匙为你收集整理的解决SpringBootThe 报错valid characters are defined in RFC 7230 and RFC 3986的全部内容,希望文章能够帮你解决解决SpringBootThe 报错valid characters are defined in RFC 7230 and RFC 3986所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部