Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java `ERR_HTTP2_PROTOCOL_ERROR`when管道字符(|)位于Wildfly 21中的GET请求查询参数中_Java_Spring_Rest_Encoding_Wildfly - Fatal编程技术网

Java `ERR_HTTP2_PROTOCOL_ERROR`when管道字符(|)位于Wildfly 21中的GET请求查询参数中

Java `ERR_HTTP2_PROTOCOL_ERROR`when管道字符(|)位于Wildfly 21中的GET请求查询参数中,java,spring,rest,encoding,wildfly,Java,Spring,Rest,Encoding,Wildfly,我们最近将Spring REST应用程序从Wildfly 15.0.1.Final迁移到Wildfly 21.0.0.Final,这显然给GET请求带来了一个问题:只要GET请求的查询参数字符串中有(管道)字符,请求没有返回响应,我们得到ERR\u HTTP2\u PROTOCOL\u ERROR 我知道根据HTTP的RFC1738规范,“|”(管道)字符是不安全的,而RFC3986允许对Unicode字符进行编码 但是我希望它继续工作,因为我们有外部客户端发送查询参数中带有|字符的请求,并且当

我们最近将Spring REST应用程序从Wildfly 15.0.1.Final迁移到Wildfly 21.0.0.Final,这显然给
GET
请求带来了一个问题:只要
GET
请求的查询参数字符串中有
(管道)字符,请求没有返回响应,我们得到
ERR\u HTTP2\u PROTOCOL\u ERROR

我知道根据HTTP的RFC1738规范,“|”(管道)字符是不安全的,而RFC3986允许对Unicode字符进行编码

但是我希望它继续工作,因为我们有外部客户端发送查询参数中带有
|
字符的请求,并且当前如果我们移动到当前的Wildfly 21配置,这些请求将失败

相同的配置在Wildfly 15.0.1.Final上运行良好

我在
standalone.xml
中有这些,但没有用:



…这在
standalone.conf.bat
中:

set "JAVA_OPTS=%JAVA_OPTS% -Dorg.apache.catalina.connector.URI_ENCODING=UTF-8"
在同一个虚拟机上使用(迁移)配置的同一代码在Wildfly 15.0.1上运行良好。Final但在Wildfly 21.0.0中抛出
ERR\u HTTP2\u PROTOCOL\u ERROR
。只要请求中有
,Final
。在这些情况下,看起来请求甚至没有达到我的断点

我可以通过对
$.ajaxSetup
中的所有
进行URL编码,以编程方式进行脏修复,但这只修复来自服务器本身的请求,而不修复在其
GET
请求查询参数中带有
的外部请求

脏(和不足)修复:

$.ajaxSetup({
发送前:函数(jqXHR,设置){
settings.url=settings.url.replace(/\\\\\\\\\\\/g,“%7C%7C”);
}
});
有人遇到过这个问题吗

完整的
standalone.xml
(屏蔽敏感信息)

编辑:在此期间,我注意到只有当我点击Windows
hosts
文件中定义的端点时,才会发生此问题。当我检查我们公司的负载平衡器时,它工作正常

因此,例如,如果
127.0.0.1 localhost.myproduct.com
位于
hosts
文件中,则服务器1不起作用,但如果端点通过负载平衡器路由,则访问同一服务器的操作正常