当前位置: 首页 > 知识库问答 >
问题:

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

高慈
2023-03-14

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

编号: 100

加密ID:e4/E5cR/aM=

URL编码的ID: +e4/E5cR/aM=

生成的网址:http://localhost/file/demo/+e4/E5cR/aM=

当我试图访问那个链接时,我甚至没有进入我的servlet的代码——服务器返回这个错误:未能加载资源:服务器响应的状态为400(错误的请求)

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

共有2个答案

有宏峻
2023-03-14

您可能遇到了以下两个问题之一:

1) 您没有在 URL 中包含端口。您已经将 Tomcat 端口配置为端口 80,在这种情况下不需要该端口,或者您需要包含该端口(默认为 8080),例如:

http://localhost:8080/file/demo/%2Be4%2FE5cR%2FaM%3D

2) 您将加密的ID作为URL本身的一部分添加,它必须映射到URL映射中的某种Servlet/JSP/View,这是不可能的。Tomcat不会识别唯一的ID,也不会知道要调用的相应处理程序来处理映射。假设您打算调用映射到“/file/demo”的servlet/JSP/控制器,则更可能希望将ID作为请求参数传递,例如:

http://localhost:8080/file/demo?id=%2Be4%2FE5cR%2FaM%3D
周健
2023-03-14

您在 url 中编码了斜杠“/”。Apache不允许他们,因为潜在的atacks。有设置允许他们:

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

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

见类似帖子。

 类似资料:
  • 问题内容: 我有一台运行Java servlet的Tomcat服务器。我正在尝试使一个servlet返回给定的加密ID的存储文件。 编号:100 加密的ID:+ e4 / E5cR / aM = 网址编码的ID:%2Be4%2FE5cR%2FaM%3D 结果URL:http:// localhost / file / demo /%2Be4%2FE5cR%2FaM%3D 当我尝试访问该链接时,我什

  • 我们在windows 10机器上从Tomcat 9.0.29升级到9.0.44,并收到503条错误消息。Tomcat托管Java应用程序。对Tomcat服务器的请求作为工作线程从单独的Apache代理服务器通过端口8010发送。我可以看到Tomcat服务正在运行,Java应用程序正在启动并运行。这可以从Tomcat服务器上的//localhost:8080/{JavaApp}进行验证。 但是,来自

  • 问题内容: 好的,我有一个非常简单的mysql数据库,但是当我尝试通过mysql-admin运行此查询时,出现奇怪的错误 INSERT INTO自定义报告(研究,类型,模式,选择,描述)VALUES(‘1’,‘2’,‘3’,‘4’,‘5’); 错误: 1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以便在“选择,描述” VALUES(“ 1”,“ 2”,“

  • 我将Tomcat8.5与Eclipse集成在一起,但当我启动服务器并转到http://localhost:8080或http://localhost:8080/psite(配置了带有index.html的Eclipse项目)时,每次都会出现404错误。 我尝试“切换位置”-不起作用。 “服务器概述”屏幕中的“服务器配置”部分在我的Eclipse(霓虹灯)上丢失。 在窗口->首选项->运行时环境下:

  • GetFolder操作给了我同样的结果。 此错误通常由未经许可的邮箱帐户引起。但我的所有用户都有活跃的Exchange许可证。为什么我会得到这样的ErrorNonExistentMailbox错误响应?

  • 问题内容: 我尝试在两种情况下执行T-SQL查询(我使用Win7,python 3.2,MS SQL Server Express 2008,适用于python 3.2的pyodbc): -情况1: 使用MS SQL Server Management Studio,我尝试执行查询: 返回成功结果 情况2: 但是运行代码后,我收到错误消息 如果我没有运行代码 我没有收到任何错误。但为什么? 问题答