我正在转发一些API请求到一个有php后端的服务。因此我需要能够接受[ and ] on我的一个rest资源。Tomcat有一种方法可以为你的整个服务做到这一点:server.tomcat.relaxed-query-chars=[,].出于安全考虑,我只想在一个特定的API资源上允许这些操作,而不是在整个服务上。有没有办法实现这一点?
谢谢,布莱恩
我正在转发一些API请求到一个有php后端的服务。因此我需要能够接受[ and ] on我的一个rest资源。Tomcat有一种方法可以为你的整个服务做到这一点:server.tomcat.relaxed-query-chars=[,].出于安全考虑,我只想在一个特定的API资源上允许这些操作,而不是在整个服务上。有没有办法实现这一点?
谢谢,布莱恩
3条答案
按热度按时间kqqjbcuj1#
正如您所观察到的,Tomcat配置选项适用于整个服务器。如果您想做一些特定于特定REST资源的事情,您可以实现自己的
Filter
,它检查查询字符串中所有URL的字符,而不是您希望检查更宽松的REST资源的URL。hrysbysz2#
最后我离开了server.tomcat.relaxed-query-chars=[,]。然后我创建了一个RequestBodyAdviceAdapter ControllerAdvice。如果它不是我的特定资源,我添加了逻辑来验证它将为[和]仍然为所有其他资源抛出
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
。gopyfrb33#
您需要添加特定于url的