一尘不染

为什么此URL从Tomcat返回错误400?

tomcat

我有一台运行Java servlet的Tomcat服务器。我正在尝试使一个servlet返回给定的已加密文件的存储文件。

编号:100

加密的ID:+ e4 / E5cR / aM =

网址编码的ID:%2Be4%2FE5cR%2FaM%3D

结果URL:http:// localhost / file / demo
/%2Be4%2FE5cR%2FaM%3D

当我尝试跟随该链接时,我什至没有进入我的servlet的代码-服务器返回此错误: 无法加载资源:服务器以400(错误请求)的状态响应

该URL有什么问题,导致Tomcat在到达我的代码之前拒绝了它?我通过URL编码器运行它,但看不到任何无效字符。


阅读 312

收藏
2020-06-16

共1个答案

一尘不染

您在网址中编码了斜杠“ /”。由于潜在的攻击,Apache不允许使用它们。有允许设置的设置:

System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");

要么

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
2020-06-16