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

请求在Tomcat 8中返回400个错误请求

轩辕炎彬
2023-03-14

我在Tomcat中部署了一个Java的Web应用程序

如果我的URL是这样的,我会收到来自Tomcat 8的400个错误请求

https://<serverurl>?cmisSelector=object&objectId=TyNGT0wjJSMwMDAjMDAjIyMj&filter=cmis:createdBy,a:b:ab,a:b:abc&renditionFilter=cmis:thumbnail,application/pdf,image/bmp,image/gif,image/jpeg,image/png

编码为

https%3A%2F%2F%3Cserverurl%3E%3FcmisSelector%3Dobject%26objectId%3DTyNGT0wjJSMwMDAjMDAjIyMj%26filter%3Dcmis%3AcreatedBy%2Ca%3Ab%3Aab%2Ca%3Ab%3Aabc%26renditionFilter%3Dcmis%3Athumbnail%2Capplication%2Fpdf%2Cimage%2Fbmp%2Cimage%2Fgif%2Cimage%2Fjpeg%2Cimage%2Fpng

但是如果我从 URL 中删除 a:b:ab,a:b:abc 和 renditionFilter=cmis:thumbnail,application/pdf,image/bmp,image/gif,image/jpeg,image/png,那么它就可以工作了,这个 URL 的形成如下

https://<serverurl>?cmisSelector=object&objectId=TyNGT0wjJSMwMDAjMDAjIyMj&filter=cmis:createdBy

似乎是一些URL编码问题,但无法找出确切的问题。

共有1个答案

米裕
2023-03-14

默认情况下,如果URL分别包含正斜杠/(/)和\(\),Tomcat将返回HTTP错误请求(400)。这是一项安全措施。

您可以通过设置以下系统属性(例如在 catalina.propertiesCATALINA_OPTS 中)来禁用该功能并允许这些字符:

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

### You may not need this one, as you only have forward slashes
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
 类似资料:
  • 我试图对我写的rest api执行一个put请求,但它总是返回400-bug请求。 java.io.IO异常:服务器返回HTTP响应代码:400为URL:http://localhost:8000/api/v0/contacts/2sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 我可以用firefox rest客户端

  • 问题内容: 这工作正常: 这将返回400 Bad Request(只是使用.ajax来支持错误处理的上述jQuery的重新格式)。 问题答案: 我认为您只需要再添加2个选项(和):

  • 我在本地服务器上找到了它失败的代码: 在我看来,它似乎不能获得或?

  • Xml字符串没有以Xml格式打印。我正在创建动态soap信封,所以我可能无法为信封创建模型类,我提到了这一点,但他正在使用模态类创建soap信封,我想传递原始字符串xml,有什么方法可以传递原始xml字符串到改型体。

  • 我试图使用Gmail API将用户设置应用到Gmail帐户,但它不断返回错误400错误请求。 我可以看到错误代码在Gmail API控制台,它来自我的服务号,所以代码不可能是如此错误,但它让我发疯,只是不能找出什么是错误的。 如果有人能给我指出正确的方向,我会非常感激。

  • 问题内容: 我有这个应用程序,它可以在本地运行,并且在部署时可以使用.mdf SQL Express数据库文件(通常用于测试目的)。但是,当我将其更改为可与我们的SQL Server 2008一起使用时,该应用程序可以运行,但该服务无法运行。 例如,如果在页面后面的代码中,我有一个按钮可以向表中添加数据,例如: 我的web.config设置为在该服务器上使用模拟,并且一切运行良好。但是,对于我的服