Ssl Gatling:WebSocketHandshakeException:无效握手响应getStatus:400错误请求
我正在尝试打开ws-connection,但出现错误:Ssl Gatling:WebSocketHandshakeException:无效握手响应getStatus:400错误请求,ssl,websocket,ssl-certificate,gatling,ws,Ssl,Websocket,Ssl Certificate,Gatling,Ws,我正在尝试打开ws-connection,但出现错误: val openConnection = exec( ws("Connect -> WS").wsName("user").connect("wss://socket.develop.test.com?access_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9")) 然后,我得到: 09:49:53.343 [DEBUG] i.g.h.c.i.DefaultHttpClient - Insta
val openConnection = exec( ws("Connect -> WS").wsName("user").connect("wss://socket.develop.test.com?access_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9"))
然后,我得到:
09:49:53.343 [DEBUG] i.g.h.c.i.DefaultHttpClient - Installing SslHandler for wss://socket.develop.test.com?access_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9
09:49:53.381 [DEBUG] i.n.h.s.u.InsecureTrustManagerFactory - Accepting a server certificate: CN=Kubernetes Ingress Controller Fake Certificate, O=Acme Co
09:49:53.418 [DEBUG] i.n.h.c.h.w.WebSocketClientHandshaker13 - WebSocket version 13 client handshake key: YndmXwIGgZseWyRlmXBoyw==, expected response: H2YGNn6p+DyLyudnc1JCluHjj7E=
09:49:53.419 [DEBUG] i.g.h.c.i.WebSocketHandler - ctx.write msg=DefaultFullHttpRequest(decodeResult: success, version: HTTP/1.1, content: EmptyByteBufBE)
GET ?access_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9
HTTP/1.1
accept: */*
upgrade: websocket
connection: upgrade
sec-websocket-key: YndmXwIGgZseWyRlmXBoyw==
host: socket.develop.test.com
origin: https://socket.develop.test.com
sec-websocket-version: 13
09:49:53.423 [DEBUG] i.n.h.s.SslHandler - [id: 0xfa53644a, L:/192.168.150.134:54082 - R:socket.develop.test.com/78.47.16.48:443] HANDSHAKEN: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
09:49:53.450 [DEBUG] i.g.h.c.i.WebSocketHandler - Read msg=HttpObjectAggregator$AggregatedFullHttpResponse(decodeResult: success, version: HTTP/1.1, content: CompositeByteBuf(ridx: 0, widx: 163, cap: 163, components=1))
HTTP/1.1 400 Bad Request
Server: openresty/1.15.8.1
Date: Tue, 10 Mar 2020 06:49:53 GMT
Content-Type: text/html
Content-Length: 163
Connection: close
09:49:53.452 [DEBUG] i.g.h.c.i.WebSocketHandler - Crash
io.netty.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 400 Bad Request
at io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker13.verify(WebSocketClientHandshaker13.java:267)
在gatling.conf中,我还设置了:
enableSni = false
useOpenSsl = false
enableHostnameVerification = false
如果我尝试打开与任何WS客户端(如SmartWebsocketClient)的连接,一切正常,但通过gatling无法打开连接。有什么好办法吗?
wss://domain?access_token...
不是有效的URL。路径组件必须以/
开头,而不是?
开头。这意味着请求无效,这可以解释400错误请求的响应
URL必须至少为wss://domain/?access_token...
(即/
前面的?
),但可能服务器也会意外看到URL的其余部分。请检查服务器的实际需求。wss://domain?access_token...
不是有效的URL。路径组件必须以/
开头,而不是?
开头。这意味着请求无效,这可以解释400错误请求的响应
URL必须至少为wss://domain/?access_token...
(即/
前面的?
),但可能服务器也会意外看到URL的其余部分。请检查服务器的实际需求。这是Netty中的一个错误,当路径为空时,它无法正确计算WebSocket握手请求url。
我刚刚提供了一个补丁:。
Gatling中的兄弟问题:这是Netty中的一个bug,当路径为空时,它无法正确计算WebSocket握手请求url。
我刚刚提供了一个补丁:。
《加特林》中的兄弟姐妹问题:这怎么会是一个bug?空路径是无效的URL,即错误在客户端而不是服务器中。正如您所解释的,HTTP中无效的是负载中以问号开头的URL。这就是Netty中的bug所在:它应该生成一个以/开头的URL。我从来没有提到过服务器端的任何事情。加特林本身就是建立在内蒂之上的。对不起,我误解了你的答案。这怎么会是一个bug呢?空路径是无效的URL,即错误在客户端而不是服务器中。正如您所解释的,HTTP中无效的是负载中以问号开头的URL。这就是Netty中的bug所在:它应该生成一个以/开头的URL。我从来没有提到过服务器端的任何事情。加特林本身就是建立在内蒂之上的。对不起,我误解了你的答案。