SpringBoot 提示:RequestRejectedException:The request was rejected because the URL was not normalized.

「爱情、让人受尽委屈。」 2023-10-10 13:42 177阅读 0赞

今天遇到一个问题:本地磁盘通过SpringMVC 资源映射成URL地址可以访问的资源,提示如下错误信息:

RequestRejectedException:The request was rejected because the URL was not normalized.

错误的大致意思:请求资源的URL地址不规范错误。

造成错误发生的原因

由于我项目集成SpringSecurity 框架,在此框架中存在一个HttpFirewall接口。主要用于:用于拒绝潜在危险请求。

HttpFirewall继承图

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5Zyo5aWL5paX55qE5aSn6YGT_size_20_color_FFFFFF_t_70_g_se_x_16

上述错误报错点在:StrictHttpFirewall.isNormalized()方法,主要用于:检查URL是否包含指定特殊字符./“, “/../“ or “/.”

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5Zyo5aWL5paX55qE5aSn6YGT_size_20_color_FFFFFF_t_70_g_se_x_16 1

异常的抛出

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5Zyo5aWL5paX55qE5aSn6YGT_size_20_color_FFFFFF_t_70_g_se_x_16 2

解决办法:

指定HttpFirewall的默认实现为DefaultHttpFirewall

实列代码:

  1. /**
  2. * HTTP 防火墙规则修改:允许URL包含双斜杠
  3. * @return
  4. */
  5. @Bean
  6. public HttpFirewall allowUrlEncodedSlashHttpFirewall() {
  7. return new DefaultHttpFirewall();
  8. }

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5Zyo5aWL5paX55qE5aSn6YGT_size_15_color_FFFFFF_t_70_g_se_x_16

发表评论

表情:
评论列表 (有 0 条评论,177人围观)

还没有评论,来说两句吧...

相关阅读