当前位置: 首页 > news >正文

Invalid <url-pattern> [sso.action] in filter mapping

Tomcat 8.5.86版本启动web项目报错Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> [sso.action] in filter mapping

查看项目的web.xml文件相关片段

 <filter-mapping><filter-name>SSOFilter</filter-name><url-pattern>sso.action</url-pattern></filter-mapping>

这里的url-pattern取值可能不符合标准。首先查看servlet 3.1规范

Java Servlet Specifications
Servlet 4.0 specification is JSR 369.
Servlet 3.1 specification is JSR 340.
Servlet 3.0 specification is JSR 315.
Servlet 2.5 is a maintenance release of Servlet 2.4. Both are JSR 154.

在这里插入图片描述
相关的内容如下图所示
在这里插入图片描述
再查看Tomcat的源码org.apache.catalina.core.StandardContext#validateURLPattern

 /*** Validate the syntax of a proposed <code>&lt;url-pattern&gt;</code> for conformance with specification* requirements.** @param urlPattern URL pattern to be validated** @return <code>true</code> if the URL pattern is conformant*/private boolean validateURLPattern(String urlPattern) {// 不能为空if (urlPattern == null) {return false;}// 不能包含换行 制表符if (urlPattern.indexOf('\n') >= 0 || urlPattern.indexOf('\r') >= 0) {return false;}// 空字符串代表匹配所有if (urlPattern.equals("")) {return true;}// 以 * 开头if (urlPattern.startsWith("*.")) {if (urlPattern.indexOf('/') < 0) {checkUnusualURLPattern(urlPattern);return true;} else {return false;}}// 以/开头不包含*if (urlPattern.startsWith("/") && !urlPattern.contains("*.")) {checkUnusualURLPattern(urlPattern);return true;} else {return false;}}

可以看到urlPattern可以为空字符串、至少以*.开头不包含/或者以/开头不不包含*.
checkUnusualURLPattern仅仅是打印日志,不会导致报错

    /*** Check for unusual but valid <code>&lt;url-pattern&gt;</code>s. See Bugzilla 34805, 43079 & 43080*/private void checkUnusualURLPattern(String urlPattern) {if (log.isInfoEnabled()) {// First group checks for '*' or '/foo*' style patterns// Second group checks for *.foo.bar style patternsif ((urlPattern.endsWith("*") &&(urlPattern.length() < 2 || urlPattern.charAt(urlPattern.length() - 2) != '/')) ||urlPattern.startsWith("*.") && urlPattern.length() > 2 && urlPattern.lastIndexOf('.') > 1) {log.info("Suspicious url pattern: \"" + urlPattern + "\"" + " in context [" + getName() + "] - see" +" sections 12.1 and 12.2 of the Servlet specification");}}}

以上实现在Tomcat 9.0.55中没有变化

综合分析,修改web.xml中配置如下(在url-pattern前面添加一个/)

<filter-mapping><filter-name>SSOFilter</filter-name><url-pattern>/sso.action</url-pattern>
</filter-mapping>
http://www.lryc.cn/news/26943.html

相关文章:

  • 【11】linux命令每日分享——useradd添加用户
  • Newman+Jenkins实现接口自动化测试
  • MySQL:事务+@Transactional注解
  • 数字IC手撕代码--低功耗设计 Clock Gating
  • 易基因|m6A RNA甲基化研究的数据挖掘思路:干货系列
  • 【微信小程序】-- 页面配置(十八)
  • 玩好 StarRocks,大厂 offer 接不完!|字节跳动、小红书、京东物流、唯品会、腾讯音乐要的就是你!
  • C# IoC控制反转学习笔记
  • Python解题 - CSDN周赛第33期
  • Session攻击
  • 【Linux】Shell详解
  • 汉字找不同隐私协议
  • CEC2017:斑马优化算法(Zebra Optimization Algorithm,ZOA)求解cec2017(提供MATLAB代码)
  • 【Linux要笑着学】进程创建 | 进程终止 | slab分派器
  • 数据资产管理建设思考(二)
  • 微软发布多模态版ChatGPT!取名“宇宙一代”
  • 【学习笔记】深入理解JVM之对象的实例化
  • IP协议的漏洞及防护措施
  • Linux命令·mkdir
  • 智能家居项目(八)之树莓派+摄像头进行人脸识别
  • 渗透测试之地基服务篇:无线攻防之钓鱼无线攻击(上)
  • 「ABAP」一文带你入门OPEN SQL中的SELECT查询(附超详细案例解析)
  • 【搞透C语言指针】那年我双手插兜, 不知道指针是我的对手
  • 如何从 Android 手机上的 SD 卡恢复已删除的照片
  • 01-前端-htmlcss
  • 【YOLO系列】YOLOv5超详细解读(网络详解)
  • 从 ChatGPT 爆火回溯 NLP 技术
  • 面了 6 家大厂,并拿下 5 家 offer,进大厂好像也没有那么困难吧....
  • 四、Spring对IoC的实现
  • Java语言如何求平方根