技术标签: 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;
}
如果,有读者遇到类似的问题,说不定就是在参数传递过程中,有其他类对参数进行了转换,导致问题的发生!!!
将抬头进行转换的代码进行重构,不进行转换,直接返回原来的字符!
顺利解决问题!!!
遇到问题,本地有环境,可以先单步调试。先不网上找解决方案,因为可能找不到!!!
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
文章浏览阅读1.5w次,点赞2次,收藏48次。1、首先使用npm安装CodeMirror插件,sql-formatter格式化插件npm install --save codemirrornpm install --save sql-formatter2、然后引入该文件import 'codemirror/theme/ambiance.css'import 'codemirror/lib/codemirror.css'import 'codemirror/addon/hint/show-hint.css'const ..._codemirror sql语法检查
文章浏览阅读4.9k次。让Spring能够把作为ResponseBody返回的Java对象自动使用Jackson序列化为JSON根式这样,只要在控制器方法上添加@ResponseBody注解(或在控制器类上添加@RestController注解),则方法返回值就会被Jackson自动序列化为JSON格式返回。见配置文件片段:class="org.springfr_kebabcasestrategy snakecasestrategy lowercasestrategy
文章浏览阅读1.8w次。不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽都顺利。_mybatis分页拦截器
文章浏览阅读363次。在我们对这个博客以前的文章中,我们使用红酒程序安装和运行在Ubuntu和其他红帽的Linux发行版基于Windows应用程序。 没有可称为PlayOnLinux另一个开源软件,使用葡萄酒作为它的基础,并提供一个功能丰富的功能和友好的用户界面安装和在Linux上运行Windows应用程序。 该软件的目的是简化和自动化安装和运行在Linux平台上的窗口的应用程序的过程。 它有一个应用程序列表,您可以在..._playonlinux
文章浏览阅读1.7k次。 继前面微软公司发布Windows Communication Foundation (WCF)和Windows CardSpace的示例程序之后,微软今天又发布了WF的教程和大量示例,对于学习WF的朋友来说,是一份很好的学习资料。下载包括教程和示例两个压缩包,在示例部分包括如下的Application:l OrderingStateMachinel _微软wf教程
文章浏览阅读1k次。GDI+学习之线性渐变画刷_gdi+线性画刷
文章浏览阅读6.4k次,点赞6次,收藏29次。#一、硬件连接串口引脚TXDDIO_2RXDDIO_3二、移植文件链接:https://pan.baidu.com/s/1cC8HA_GC6e3Kci1ayvJPIA 提取码:xdke将 uart.c 和 uart.h 两个文件拖拽至CCS工程的Application文件夹下添加文件过程中,选项选择如下2.1 uart.c/**********..._cc2640r2串口使用
文章浏览阅读1.6k次。ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVR..._oracle底层数据结构
文章浏览阅读1.5w次,点赞7次,收藏4次。新版chrome没有了编码功能,不过对于强大的chrome插件这并不是什么大问题!~只需在chrome网上应用店安装名为Set Character Encoding 的插件就能轻松解决了!下载地址:https://chrome.google.com/webstore/detail/set-character-encoding/bpojelgakakmcf_chrome source 源碼空白
文章浏览阅读2.1k次。PS插件:灯光工厂安装教程 PS插件2020wids版最新插件:灯光工厂及详细安装教程;插件下载地址:https://www.henenseo.com/archives/3267收藏分享不易,希望大家多多点个赞,投个币,感谢大家!...
文章浏览阅读2.2k次。在python中,要操作redis,目前主要是通过一个python-redis模块来实现1、在python中安装redis模块2、在python中使用redis跟其他模块一样,在安装好redis模块后,要使用redis模块就要先导入。python连接。_python redis连接池
文章浏览阅读3k次,点赞5次,收藏33次。文章梳理了自然语言处理( Natural Language Processing, NLP)领域的大语言模型最新研究方向。_大语言模型未来发展的方向包括哪些