问题解决:org.springframework.util.InvalidMimeTypeException: Invalid mime type “application/xhtml+xml“_caused by: org.springframework.util.invalidmimetyp-程序员宅基地

技术标签: spring  spring boot  问题修复记录  java  spring学习系列  MimeType  Java学习系列  

问题场景

项目运行过程中,部分链接访问会报错,报错提示如下:

org.springframework.http.InvalidMediaTypeException: Invalid mime type "application/xhtml+xml": Invalid token character '+' in token "xhtml+xml"
	at org.springframework.http.MediaType.parseMediaType(MediaType.java:534)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
	at org.springframework.http.MediaType.parseMediaTypes(MediaType.java:556)
	at org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping.getAcceptedMediaTypes(WelcomePageHandlerMapping.java:93)
	at org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping.getHandlerInternal(WelcomePageHandlerMapping.java:82)
	at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:401)
	at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1231)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1014)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:155)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.common.filter.PermissionFilter.doFilter(PermissionFilter.java:74)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at pub.servlet.CsrfFilter.doFilter(CsrfFilter.java:55)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at pub.servlet.TokenLoginFilter.doFilter(TokenLoginFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at pub.servlet.XssFilter.doFilter(XssFilter.java:89)

本文主要是讲述该种情况发生的原因及解决方案!

问题环境

软件 版本
springboot 2.1.8.RELEASE

问题原因

这其实是一个坑!!!
在这里插入图片描述
一般遇到这种问题,找不出思路的话,单步调试是解决办法的最快办法。没必要去Google或者百度,因为每个人的情况不一定一致,其他人的博客也不一定将发生问题的环境说清楚。所以,别人可以的解决方案不一定适合当前环境!!!

经过重重跳转,终于发现了原因!原来是项目有设置了XssFilter,会将参数里面的敏感字符进行替换。其他会对抬头进行转换,代码如下:

public String getHeader(String name) {
    
    String value = super.getHeader(xssEncode(name));
    if (value != null) {
    
        value = xssEncode(value);
    }

    return value;
}

如果,有读者遇到类似的问题,说不定就是在参数传递过程中,有其他类对参数进行了转换,导致问题的发生!!!

解决方案

将抬头进行转换的代码进行重构,不进行转换,直接返回原来的字符!

结果

顺利解决问题!!!

总结

遇到问题,本地有环境,可以先单步调试。先不网上找解决方案,因为可能找不到!!!

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
在这里插入图片描述
拜拜

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013084266/article/details/112463821

智能推荐

PowerMockito单元测试中的Invalid use of argument matchers问题详解_when using matchers, all arguments have to be prov-程序员宅基地

文章浏览阅读2.8w次,点赞10次,收藏10次。首先,简单说说PowerMockito进行单元测试的三部曲:打桩,即为非测试目标方法设置返回值,这些返回值在测试目标方法中被使用。执行测试,调用测试目标方法。验证测试结果,如测试方法是否被执行,测试结果是否正确等。其次,在使用PowerMockito框架进行单元测试的过程中,经常遇到如下异常:Invalid use of argument matchers!0 matchers expected..._when using matchers, all arguments have to be provided by matchers.

Linux服务器网卡信息获取以及带宽测试_关注服务器的网卡流量情况需要关哪些方面-程序员宅基地

文章浏览阅读1.7k次。Linux下测试带宽流量信息查找了很多文章都使用的工具进行信息查看和获取,好巧不巧公司的服务器是内网环境,yum wget都获取不到,想本地下载上传后安装发现还需要下载很多依赖包一同安装。懒癌晚期的我自然不死心,一顿查找之后发现一些原生可用的指令watch more /proc/net/dev查看系统网络信息,有实时的网络流量信息,就是字节看起来太难受了这里也可以看到服务器的网卡名称我们可以使用以下命令查看具体网卡信息ethtool <网卡名称>比如:ethtool e_关注服务器的网卡流量情况需要关哪些方面

用友iuap design开发入门学习一-----运行第一个项目_如何使用用友iuap开发平台-程序员宅基地

文章浏览阅读6.8k次。用友iuap design开发入门学习一-----运行第一个项目1.前面已经讲了如何搭建环境,这篇博客主要是如何使用官方例子导入maven工程并且运行。2.如图所示:导入开发工具E:\DevTool\examples下的iuap_quickstart工程,导入的是maven工程,导入后如图所示:2.数据库连接:请先在数据库执行ddl和dml语句。2.1 右键工_如何使用用友iuap开发平台

ArcGIS中去除Z或M值的方法_arcgis去除zm值-程序员宅基地

文章浏览阅读3.7w次,点赞4次,收藏19次。ARCGIS数据处理中Z值或M值对线转面的操作造成了错误,本文介绍如何去除坐标中的Z值和M值..._arcgis去除zm值

Android开发在java文件中使用dimen中设定的值-用于适配_android如何在类中改变dimen的值-程序员宅基地

文章浏览阅读3.1k次。为了适配不同分辨率的Android机,我们在不同分辨率的value文件夹下面写入了dimen标签。在xml布局文件中引用很简单android:padding="@dimen/dp_20"即可。在java中也可以使用:int width = (int)getResources().getDimension(R.dimen.dp_167);..._android如何在类中改变dimen的值

Python3.8 pip install wxPython 报错解决-XXOO_python 3.8 安装wxpython失败-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏4次。一、问题二、解决1.下载(Window)地址:https://pypi.org/project/wxPython/#files选择Python环境对接的版本。注:cp38就是Python3.82.安装Cmd到下载文件所在目录,pip install wxPython-4.1.1-cp38-cp38-win_amd64.whl 安装搞定感谢各位大大的耐心阅读~..._python 3.8 安装wxpython失败

随便推点

js控制页面跳转-程序员宅基地

文章浏览阅读67次。mentById("type").value; var value = document.getElementById("value").value; window .location.href="http://www.xxx.net/xxx/igportal.html?page=13292905&amp;type="+type+"&amp;value="+encodeURIComponent_js 页面跳转

Oracle:SQL语句--删除用户-程序员宅基地

文章浏览阅读826次。——删除用户语法drop user 用户名 cascade;例:drop user dashan cascade;注:cascade 美 [kæ’sked] n. 小瀑布,瀑布状物;串联,有级联串联的意思,执行“drop user dashan cascade;”意思是:删除dashan这个用户的同时,删除 dashan 用户下..._oracle删除用户的sql语句

中M2019春C入门和进阶练习 7-39 龟兔赛跑 (20 分)_本题要求编写程序,输出指定的带框文字。输入格式:本题无输入输出格式:按照下列格式输出带框文字。***-程序员宅基地

文章浏览阅读201次。乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?输入格式:输入在一行中给出比..._本题要求编写程序,输出指定的带框文字。输入格式:本题无输入输出格式:按照下列格式输出带框文字。************ welcome************

POJ 1042 Gone Fishing (DP)_pojjohn捕鱼问题-程序员宅基地

文章浏览阅读515次。#include #include using namespace std;int f[26];int d[26];int t[25];int lakefish[26][193];int maxfish[26][193]; // F(i,k): max fish in h times, when farest lake is i_pojjohn捕鱼问题

Vue模块导入报错:Module not found: Error:[CaseSensitivePathsPlugin]_module not found: error: package path ./lib/locale-程序员宅基地

文章浏览阅读1.3w次。今天学习vue项目练手时,出了一个小小的错误:检查了下,发现自己在模块导入的时候没有和组件文件名大小写完全一致造成的。改为上述,即必须和文件名一毛一样,大小写敏感,唉。居然只是大小写错误,要注意大小写敏感问题转载:https://blog.csdn.net/qq_36256590/article/details/110431544..._module not found: error: package path ./lib/locale/lang/en is not exported f

Java单个对象和List对象转换成Json,Json转List_java 对象直接存储数据库 json list-程序员宅基地

文章浏览阅读2w次,点赞4次,收藏10次。目录(一)使用单个对象转换JSON对象(二)多个对象存到List,再转换成JSON(三)json的list对象转List对象(一)使用单个对象转换JSON对象import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org..._java 对象直接存储数据库 json list

推荐文章

热门文章

相关标签