Netty不允许使用管道符号|并抛出异常

问题描述 投票:0回答:1

我的端点是/mz/api/mot/pol/re/pt?Output=1|920222|R1205200130|Success|

我正在运行于Netty的Spring Boot上使用网关应用程序

并且面对下面的异常,

java.lang.IllegalArgumentException: Illegal character in query at index 46: 
    at java.net.URI.create(URI.java:852) ~[na:1.8.0_242]
    at reactor.netty.http.HttpOperations.resolvePath(HttpOperations.java:300) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
    at reactor.netty.http.server.HttpServerOperations.<init>(HttpServerOperations.java:128) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
    at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:157) ~[reactor-netty-0.9.4.RELEASE.jar:0.9.4.RELEASE]
    at 

[同样的错误也发生在Tomcat中,我通过设置relaxedQueryChars属性来解决。请提出如何做到这一点。预先感谢。

spring spring-boot tomcat netty
1个回答
0
投票

您必须将查询字符串编码为netty。 “ |”将成为%7C​​

所以:/mz/api/mot/pol/re/pt?Output=1%7C920222%7CR1205200130%7CSuccess

成为:`/ mz / api / mot / pol / re / pt?输出= 1%7C920222%7CR1205200130%7CS成功

[如果您可以控制客户端,则有很多工具可以为您对该字符串进行URL编码。

另请参见:https://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html

© www.soinside.com 2019 - 2024. All rights reserved.