ljngtan opened a new issue, #4664:
URL: https://github.com/apache/shenyu/issues/4664
### Is there an existing issue for this?
- [X] I have searched the existing issues
### Current Behavior
java.lang.IllegalArgumentException: Validation failed for header
'Accept-Encoding'
at
io.netty.handler.codec.DefaultHeaders.validateValue(DefaultHeaders.java:1019)
~[netty-codec-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.handler.codec.DefaultHeaders.setObject(DefaultHeaders.java:536)
~[netty-codec-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.handler.codec.http.DefaultHttpHeaders.set(DefaultHttpHeaders.java:175)
~[netty-codec-http-4.1.92.Final.jar:4.1.92.Final]
at
org.springframework.http.client.reactive.ReactorClientHttpRequest.lambda$applyHeaders$3(ReactorClientHttpRequest.java:127)
~[spring-web-5.3.27.jar:5.3.27]
at java.base/java.util.Map.forEach(Map.java:713) ~[na:na]
at
org.springframework.http.client.reactive.ReactorClientHttpRequest.applyHeaders(ReactorClientHttpRequest.java:127)
~[spring-web-5.3.27.jar:5.3.27]
at
org.springframework.http.client.reactive.AbstractClientHttpRequest.lambda$null$0(AbstractClientHttpRequest.java:142)
~[spring-web-5.3.27.jar:5.3.27]
at reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:49)
~[reactor-core-3.4.29.jar:3.4.29]
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
~[reactor-core-3.4.29.jar:3.4.29]
at
reactor.core.publisher.FluxConcatIterable$ConcatIterableSubscriber.onComplete(FluxConcatIterable.java:147)
~[reactor-core-3.4.29.jar:3.4.29]
at
reactor.core.publisher.FluxConcatIterable.subscribe(FluxConcatIterable.java:60)
~[reactor-core-3.4.29.jar:3.4.29]
at
reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:81)
~[reactor-core-3.4.29.jar:3.4.29]
at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
~[reactor-core-3.4.29.jar:3.4.29]
at
reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:445)
~[reactor-netty-http-1.0.32.jar:1.0.32]
at
reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:707)
~[reactor-netty-core-1.0.32.jar:1.0.32]
at
reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onStateChange(DefaultPooledConnectionProvider.java:193)
~[reactor-netty-core-1.0.32.jar:1.0.32]
at
reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnection.onStateChange(DefaultPooledConnectionProvider.java:454)
~[reactor-netty-core-1.0.32.jar:1.0.32]
at
reactor.netty.channel.ChannelOperationsHandler.channelActive(ChannelOperationsHandler.java:62)
~[reactor-netty-core-1.0.32.jar:1.0.32]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:262)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:238)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:231)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelActive(CombinedChannelDuplexHandler.java:412)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:69)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.CombinedChannelDuplexHandler.channelActive(CombinedChannelDuplexHandler.java:211)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:260)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:238)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:231)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1398)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:258)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:238)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:895)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:305)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:335)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
~[netty-transport-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
~[netty-common-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
~[netty-common-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
~[netty-common-4.1.92.Final.jar:4.1.92.Final]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Caused by: java.lang.IllegalArgumentException: a header value contains
prohibited character 0x20 at index 0.
at
io.netty.handler.codec.http.DefaultHttpHeaders$HeaderValueValidator.validate(DefaultHttpHeaders.java:395)
~[netty-codec-http-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.handler.codec.http.DefaultHttpHeaders$HeaderValueValidator.validate(DefaultHttpHeaders.java:387)
~[netty-codec-http-4.1.92.Final.jar:4.1.92.Final]
at
io.netty.handler.codec.DefaultHeaders.validateValue(DefaultHeaders.java:1017)
~[netty-codec-4.1.92.Final.jar:4.1.92.Final]
... 40 common frames omitted
### Expected Behavior
No exception.
### Steps To Reproduce

### Environment
```markdown
ShenYu version(s):2.5.1
```
### Debug logs
See Current Behavior.
### Anything else?
It seems https://github.com/apache/shenyu/pull/2301 result in this bug.
May `String.join(",", acceptEncoding).trim()` resolve it.
https://github.com/apache/shenyu/blob/e37b73010a571fac478f403707f4c4b6d1d66eda/shenyu-plugin/shenyu-plugin-httpclient/src/main/java/org/apache/shenyu/plugin/httpclient/AbstractHttpClientPlugin.java#L178
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]