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

Joh*_*ink 5 java url tomcat servlets

我有一个运行Java servlet的Tomcat服务器.我正在尝试创建一个返回存储文件的servlet,给定它们的加密ID.

ID:100

加密ID:+ e4/E5cR/aM =

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

生成的URL:http:// localhost/file/demo /%2Be4%2FE5cR%2FaM%3D

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

这个URL让Tomcat在到达我的代码之前拒绝了它有什么问题?我通过URL编码器运行它,我没有看到任何无效字符.

小智 7

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

System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
Run Code Online (Sandbox Code Playgroud)

要么

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
Run Code Online (Sandbox Code Playgroud)

看到类似的帖子.