修改Tomcat/Coyote的反斜杠行为

4

我正在一个Tomcat服务器上托管一系列REST服务,其中许多服务可以使用反斜杠\作为实体Id的一部分,例如: http://server/entitype/id\of\the\entitythatcan/have/forwardslashes/too

现在我发现Tomcat没有提供改变这两个默认行为的方法,即在URL中发现反斜杠会返回错误或将\替换为正斜杠。请参考http://www.docjar.com/html/api/org/apache/coyote/tomcat5/CoyoteAdapter.java.html第735行。

是否有希望在不必制作自定义Tomcat构建文件的情况下更改此设置呢?


2
你的实体URL无效。这是你应该解决的问题。 - user207421
@EJP,这个问题无法修复,因为我需要与不喜欢合作的外部系统进行交互。 - ilcavero
你尝试在Tomcat支持的版本上运行过吗?Tomcat 5已经死了很久了。 - Christopher Schultz
@ChristopherSchultz 是的,这段代码实际上来自于Tomcat 6/7,URL上写着Tomcat5,但那是代码来源的地方。 - ilcavero
2个回答

2
请查看Tomcat的系统属性参考文档中的org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH系统属性(请注意,该参考文档适用于Tomcat 7:如果您使用的是Tomcat 6,则需要查看TC6的文档以确定是否有此选项)。

如果我没有记错的话,这个标志在Tomcat 6.0.17上启用,但它实际上只是启用将\替换为/,而不是像名称所示允许反斜杠,我希望有一种简单的方法来修改Coyote Adapter的行为,但唯一的选择似乎是创建一个自定义Tomcat构建。 - ilcavero
1
你可以随时在 TC 开发者列表上提问。 - Christopher Schultz

1

无法实现,我早就放弃了这个想法,并建议其他人寻找自己的解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接