我有一台运行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编码器运行它,但看不到任何无效字符。
您在网址中编码了斜杠“ /”。由于潜在的攻击,Apache不允许使用它们。有允许设置的设置:
System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
要么
-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true