java - 转义 HTTP 请求中的斜杠

标签 java http url tomcat jetty

我执行从 Javascript 到 Java 网络应用程序的 http DELETE 请求。该网络应用程序使用 Jersey 来发送 url。棘手的是,我使用的路径参数包含正斜杠(例如 "XX/6666")。当我在 Jetty(maven 插件)中运行时它工作正常,但是当我在我的生产服务器(Tomcat)上运行时它没有,即我得到一个 404 .

正斜杠使用 %2F 转义,所以我的请求 URL 看起来像

删除 http://.../4776/shipmentOrders/XX%2F6666

这在 http 规范中是否允许,Jetty 和 Tomcat 是否有可能以不同的方式解释这些?

最佳答案

Tomcat(我相信在版本 5、6 和 7 中)有意阻止在路径中使用 %2f 以防止目录遍历攻击。据称您可以通过设置 org.apache.tomcat.util.buf 来关闭此保护。 UDecoder.ALLOW_ENCODED_SLASH=真。我没有亲自测试过这个,但是在网上看到其他人声称它为他们解决了这个问题。但是请注意,Tomcat 前面的 Web 服务器也可能拦截并重写 URL,自动将 %2f 解码为正斜杠。

引用:http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html

关于java - 转义 HTTP 请求中的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11683569/

相关文章:

java - Java中的方法执行顺序排序

java - Camel 2.10 更改 blueprint.xml 位置

c# - 使用 TcpClient 创建 http 请求

json - AngularJS 获取 JSON 的 HTTP 状态 0

asp.net - HttpRequest的HttpMethod和RequestType有什么区别?

php - 通过URL解析字符串搜索mysql数据库

html - 如何在jsp中加密/编码url参数

java - SWT 按钮图像限制

java - 如何在JAVA中使用API​​创建新用户

php - URL - 获取 PHP 的最后一部分