我有一个运行 Java servlet 的 Tomcat 服务器。我正在尝试制作一个返回存储文件的 servlet,给定它们的加密 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 编码器运行它,但我没有在其中看到任何无效字符。
最佳答案
您在网址中编码了斜杠“/”。由于潜在的攻击,Apache 不允许它们。有设置允许他们:
System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
或
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
查看相似 post .
关于java - 为什么此 URL 从 Tomcat 返回错误 400?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49004947/