栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring 5.0.3 RequestRejectedException:由于网址未规范化,因此请求被拒绝

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring 5.0.3 RequestRejectedException:由于网址未规范化,因此请求被拒绝

Spring Security documentation提到了阻塞请求的原因。

例如,它可能包含路径遍历序列(例如/../)或多个正斜杠(//),这也可能导致模式匹配失败。一些容器在执行servlet映射之前将它们标准化,但其他容器则没有。为了避免此类问题,FilterChainProxy使用HttpFirewall策略检查并包装请求。默认情况下,未规范化的请求将自动被拒绝,并且出于匹配目的,将删除路径参数和重复的斜杠。

因此,有两种可能的解决方案-

  1. 删除双斜杠(首选方法)
  2. 通过使用以下代码来自定义StrictHttpFirewall,在Spring Security中允许//。
    步骤1 创建自定义防火墙,以允许在URL中使用斜杠。
@Beanpublic HttpFirewall allowUrlEnpredSlashHttpFirewall() {    StrictHttpFirewall firewall = new StrictHttpFirewall();    firewall.setAllowUrlEnpredSlash(true);        return firewall;}

步骤2,然后在Websecurity中配置此bean

@Overridepublic void configure(WebSecurity web) throws Exception {    //@formatter:off    super.configure(web);    web.httpFirewall(allowUrlEnpredSlashHttpFirewall());....}

步骤2是可选步骤,Spring Boot仅需要声明一个类型为bean的bean HttpFirewall



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号