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

标签 java tomcat url servlets

我有一个运行 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/

相关文章:

python - 从谷歌应用引擎点击其他服务器上的 URL

java - 如何用 Java 创建简单的 UDP 客户端-服务器通信?

java - 缺少单独的调试信息,请使用 : debuginfo-install glibc-2. 12-1.166.el6_7.7.x86_64

java - jUnit 改变方法的行为

tomcat - 使用 EclipseLink 配置连接池

java.security.InvalidKeyException : Wrong algorithm: AES or Rijndael required Error

asp.net-mvc - 如何通过 URL 传递日期,以便我的 Action 在 MVC 中读取?

c# - 在 ASP.NET 中,如何从 url 获取用户名和密码?

java - 如何制作一个JAVA小程序自动运行?

java - 在 Tomcat 上使用 OpenJPA 时出现 NullPointerException