warmcat / libwebsockets

canonical libwebsockets.org networking library
https://libwebsockets.org
Other
4.75k stars 1.48k forks source link

when libwebsocket accesses the wss interface of the third-party cloud platform, the http handshake phase fails, the message: ”HMAC signature does not match” #2718

Closed coldlapy closed 2 years ago

coldlapy commented 2 years ago

Hi, I'm having a problem with the libwebsocket library. There is a cloud platform that provides speech recognition, and I encountered an error when calling the wss interface.

However, for the same url, I can use postman successfully, and I can also use chrome's wss plugin successfully.

I think an error occurred during the http handshake. I added a log to the code, but I didn't see the server replying to accept. I couldn't find where the problem was. Please help.

the third-party cloud platform: https://global.xfyun.cn/doc/asr/voicedictation/API.html#interface-calling-flow

Below is the code to get the url `const API_SECRET = 'YjA2NjQxOTNkN2YzYjZhNzcyZjAyZDlk' const API_KEY = '0d402664e3ee9c0fcefb5479adfdde09'

exports.get_url = async () => {

var url = 'wss://iat-api.xfyun.cn/v2/iat'
var host = 'iat-api.xfyun.cn'
var apiKey = API_KEY
var apiSecret = API_SECRET
var date = new Date().toGMTString()
var algorithm = 'hmac-sha256'
var headers = 'host date request-line'
var signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v2/iat HTTP/1.1`
var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret)
var signature = CryptoJS.enc.Base64.stringify(signatureSha)
var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`
var authorization = btoa(authorizationOrigin)
url = `${url}?authorization=${authorization}&date=${date}&host=${host}`

console.log(url)

}`

the url is like: wss://iat-api.xfyun.cn/v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iSGFoenJCWXdhdGlOeThuYVVlWEhkWkdWTEVmN2NheWhRYlcyZ3hBaUJZZz0i&date=Mon, 29 Aug 2022 09:56:00 GMT&host=iat-api.xfyun.cn

Finally, the log of my libwebsocket is like this:

`./libwebsockets-test-client wss://iat-api.xfyun.cn/v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iSGFoenJCWXdhdGlOeThuYVVlWEhkWkdWTEVmN2NheWhRYlcyZ3hBaUJZZz0i&date=Mon, 29 Aug 2022 09:56:00 GMT&host=iat-api.xfyun.cn --ssl [1] 5287 [2] 5288 [2022/08/29 10:11:23:1151] N: libwebsockets test client - license MIT [2022/08/29 10:11:23:1152] N: (C) Copyright 2010-2018 Andy Green andy@warmcat.com [2022/08/29 10:11:23:1152] N: Using SSL [2022/08/29 10:11:23:1152] N: Cert must validate correctly (use -s to allow selfsigned) [2022/08/29 10:11:23:1152] N: Requiring peer cert hostname matches [2022/08/29 10:11:23:1152] N: lws_create_context: LWS: 4.3.2-unknown, NET CLI SRV H1 H2 WS ConMon IPv6-absent [2022/08/29 10:11:23:1152] N: lws_lc_tag: ++ [wsi|0|pipe] (1) [2022/08/29 10:11:23:1153] N: lws_lc_tag: ++ [vh|0|netlink] (1) [2022/08/29 10:11:23:1160] N: lws_lc_tag: ++ [vh|1|default||-1] (2) [2022/08/29 10:11:23:1161] N: using wss mode (ws) [2022/08/29 10:11:23:1243] N: dumb: connecting [2022/08/29 10:11:23:1243] N: lws_lc_tag: ++ [wsicli|0|WS/h1/default/iat-api.xfyun.cn] (1) 29: command not found --ssl: command not found [2]+ Exit 127 date=Mon, 29 Aug 2022 09:56:00 GMT root@vagrant:~/smb_files/www/libwebsockets-4.3.2/build/bin# [2022/08/29 10:11:28:1590] N: mirror: connecting [2022/08/29 10:11:28:1591] N: __lws_lc_tag: ++ [wsicli|1|WS/h1/default/iat-api.xfyun.cn] (2) [2022/08/29 10:11:28:1914] N: lws_gate_accepts: on = 0 [2022/08/29 10:11:28:1998] N: lws_gate_accepts: on = 0 [2022/08/29 10:11:28:2256] N: lws_gate_accepts: on = 0 sha1 loop input - Gna5GTdWVcmGuzTUj5e4Ew==258EAFA5-E914-47DA-95CA-C5AB0DC85B11 [2022/08/29 10:11:28:2258] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_write: lws_ssl_capable_write buf GET /v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz... 1111 lws_ssl_capable_write buf GET /v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iSGFoenJCWXdhdGlOeThuYVVlWEhkWkdWTEVmN2NheWhRYlcyZ3hBaUJZZz0i HTTP/1.1 Pragma: no-cache Cache-Control: no-cache Host: iat-api.xfyun.cn Origin: https://iat-api.xfyun.cn Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: Gna5GTdWVcmGuzTUj5e4Ew== Sec-WebSocket-Protocol: dumb-increment-protocol Sec-WebSocket-Version: 13

[2022/08/29 10:11:28:2260] N: lws_ssl_capable_write: len 514 [2022/08/29 10:11:28:2260] N: [2022/08/29 10:11:28:2261] N: 0000: 47 45 54 20 2F 76 32 2F 69 61 74 3F 61 75 74 68 GET /v2/iat?auth [2022/08/29 10:11:28:2261] N: 0010: 6F 72 69 7A 61 74 69 6F 6E 3D 59 58 42 70 58 32 orization=YXBpX2 [2022/08/29 10:11:28:2261] N: 0020: 74 6C 65 54 30 69 4D 47 51 30 4D 44 49 32 4E 6A tleT0iMGQ0MDI2Nj [2022/08/29 10:11:28:2262] N: 0030: 52 6C 4D 32 56 6C 4F 57 4D 77 5A 6D 4E 6C 5A 6D RlM2VlOWMwZmNlZm [2022/08/29 10:11:28:2262] N: 0040: 49 31 4E 44 63 35 59 57 52 6D 5A 47 52 6C 4D 44 I1NDc5YWRmZGRlMD [2022/08/29 10:11:28:2262] N: 0050: 6B 69 4C 43 42 68 62 47 64 76 63 6D 6C 30 61 47 kiLCBhbGdvcml0aG [2022/08/29 10:11:28:2263] N: 0060: 30 39 49 6D 68 74 59 57 4D 74 63 32 68 68 4D 6A 09ImhtYWMtc2hhMj [2022/08/29 10:11:28:2263] N: 0070: 55 32 49 69 77 67 61 47 56 68 5A 47 56 79 63 7A U2IiwgaGVhZGVycz [2022/08/29 10:11:28:2263] N: 0080: 30 69 61 47 39 7A 64 43 42 6B 59 58 52 6C 49 48 0iaG9zdCBkYXRlIH [2022/08/29 10:11:28:2264] N: 0090: 4A 6C 63 58 56 6C 63 33 51 74 62 47 6C 75 5A 53 JlcXVlc3QtbGluZS [2022/08/29 10:11:28:2264] N: 00A0: 49 73 49 48 4E 70 5A 32 35 68 64 48 56 79 5A 54 IsIHNpZ25hdHVyZT [2022/08/29 10:11:28:2264] N: 00B0: 30 69 53 47 46 6F 65 6E 4A 43 57 58 64 68 64 47 0iSGFoenJCWXdhdG [2022/08/29 10:11:28:2264] N: 00C0: 6C 4F 65 54 68 75 59 56 56 6C 57 45 68 6B 57 6B lOeThuYVVlWEhkWk [2022/08/29 10:11:28:2265] N: 00D0: 64 57 54 45 56 6D 4E 32 4E 68 65 57 68 52 59 6C dWTEVmN2NheWhRYl [2022/08/29 10:11:28:2265] N: 00E0: 63 79 5A 33 68 42 61 55 4A 5A 5A 7A 30 69 20 48 cyZ3hBaUJZZz0i H [2022/08/29 10:11:28:2265] N: 00F0: 54 54 50 2F 31 2E 31 0D 0A 50 72 61 67 6D 61 3A TTP/1.1..Pragma: [2022/08/29 10:11:28:2266] N: 0100: 20 6E 6F 2D 63 61 63 68 65 0D 0A 43 61 63 68 65 no-cache..Cache [2022/08/29 10:11:28:2266] N: 0110: 2D 43 6F 6E 74 72 6F 6C 3A 20 6E 6F 2D 63 61 63 -Control: no-cac [2022/08/29 10:11:28:2266] N: 0120: 68 65 0D 0A 48 6F 73 74 3A 20 69 61 74 2D 61 70 he..Host: iat-ap [2022/08/29 10:11:28:2266] N: 0130: 69 2E 78 66 79 75 6E 2E 63 6E 0D 0A 4F 72 69 67 i.xfyun.cn..Orig [2022/08/29 10:11:28:2267] N: 0140: 69 6E 3A 20 68 74 74 70 73 3A 2F 2F 69 61 74 2D in: https://iat- [2022/08/29 10:11:28:2267] N: 0150: 61 70 69 2E 78 66 79 75 6E 2E 63 6E 0D 0A 55 70 api.xfyun.cn..Up [2022/08/29 10:11:28:2267] N: 0160: 67 72 61 64 65 3A 20 77 65 62 73 6F 63 6B 65 74 grade: websocket [2022/08/29 10:11:28:2267] N: 0170: 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 55 70 ..Connection: Up [2022/08/29 10:11:28:2268] N: 0180: 67 72 61 64 65 0D 0A 53 65 63 2D 57 65 62 53 6F grade..Sec-WebSo [2022/08/29 10:11:28:2268] N: 0190: 63 6B 65 74 2D 4B 65 79 3A 20 47 6E 61 35 47 54 cket-Key: Gna5GT [2022/08/29 10:11:28:2268] N: 01A0: 64 57 56 63 6D 47 75 7A 54 55 6A 35 65 34 45 77 dWVcmGuzTUj5e4Ew [2022/08/29 10:11:28:2269] N: 01B0: 3D 3D 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 ==..Sec-WebSocke [2022/08/29 10:11:28:2269] N: 01C0: 74 2D 50 72 6F 74 6F 63 6F 6C 3A 20 64 75 6D 62 t-Protocol: dumb [2022/08/29 10:11:28:2269] N: 01D0: 2D 69 6E 63 72 65 6D 65 6E 74 2D 70 72 6F 74 6F -increment-proto [2022/08/29 10:11:28:2270] N: 01E0: 63 6F 6C 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B col..Sec-WebSock [2022/08/29 10:11:28:2270] N: 01F0: 65 74 2D 56 65 72 73 69 6F 6E 3A 20 31 33 0D 0A et-Version: 13.. [2022/08/29 10:11:28:2271] N: 0200: 0D 0A .. [2022/08/29 10:11:28:2271] N: the LWS_TLS_LOG_PLAINTEXT_TX is GET /v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iSGFoenJCWXdhdGlOeThuYVVlWEhkWkdWTEVmN2NheWhRYlcyZ3hBaUJZZz0i HTTP/1.1 Pragma: no-cache Cache-Control: no-cache Host: iat-api.xfyun.cn Origin: https://iat-api.xfyun.cn Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: Gna5GTdWVcmGuzTUj5e4Ew== Sec-WebSocket-Protocol: dumb-increment-protocol Sec-WebSocket-Version: 13

. [2022/08/29 10:11:28:2274] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_write: lws_ssl_capable_write n 514 [2022/08/29 10:11:28:2275] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_http_client_socket_service: lws_http_client_socket_service n 514 [2022/08/29 10:11:28:2351] N: lws_gate_accepts: on = 0 sha1 loop input - PFi9qBCZc36GvGOJgwZTwQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11 [2022/08/29 10:11:28:2353] W: [wsicli|1|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_write: lws_ssl_capable_write buf GET /v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz... 1111 lws_ssl_capable_write buf GET /v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iSGFoenJCWXdhdGlOeThuYVVlWEhkWkdWTEVmN2NheWhRYlcyZ3hBaUJZZz0i HTTP/1.1 Pragma: no-cache Cache-Control: no-cache Host: iat-api.xfyun.cn Origin: https://iat-api.xfyun.cn Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: PFi9qBCZc36GvGOJgwZTwQ== Sec-WebSocket-Protocol: lws-mirror-protocol Sec-WebSocket-Version: 13

[2022/08/29 10:11:28:2355] N: lws_ssl_capable_write: len 510 [2022/08/29 10:11:28:2356] N: [2022/08/29 10:11:28:2356] N: 0000: 47 45 54 20 2F 76 32 2F 69 61 74 3F 61 75 74 68 GET /v2/iat?auth [2022/08/29 10:11:28:2357] N: 0010: 6F 72 69 7A 61 74 69 6F 6E 3D 59 58 42 70 58 32 orization=YXBpX2 [2022/08/29 10:11:28:2357] N: 0020: 74 6C 65 54 30 69 4D 47 51 30 4D 44 49 32 4E 6A tleT0iMGQ0MDI2Nj [2022/08/29 10:11:28:2357] N: 0030: 52 6C 4D 32 56 6C 4F 57 4D 77 5A 6D 4E 6C 5A 6D RlM2VlOWMwZmNlZm [2022/08/29 10:11:28:2358] N: 0040: 49 31 4E 44 63 35 59 57 52 6D 5A 47 52 6C 4D 44 I1NDc5YWRmZGRlMD [2022/08/29 10:11:28:2358] N: 0050: 6B 69 4C 43 42 68 62 47 64 76 63 6D 6C 30 61 47 kiLCBhbGdvcml0aG [2022/08/29 10:11:28:2359] N: 0060: 30 39 49 6D 68 74 59 57 4D 74 63 32 68 68 4D 6A 09ImhtYWMtc2hhMj [2022/08/29 10:11:28:2359] N: 0070: 55 32 49 69 77 67 61 47 56 68 5A 47 56 79 63 7A U2IiwgaGVhZGVycz [2022/08/29 10:11:28:2360] N: 0080: 30 69 61 47 39 7A 64 43 42 6B 59 58 52 6C 49 48 0iaG9zdCBkYXRlIH [2022/08/29 10:11:28:2360] N: 0090: 4A 6C 63 58 56 6C 63 33 51 74 62 47 6C 75 5A 53 JlcXVlc3QtbGluZS [2022/08/29 10:11:28:2360] N: 00A0: 49 73 49 48 4E 70 5A 32 35 68 64 48 56 79 5A 54 IsIHNpZ25hdHVyZT [2022/08/29 10:11:28:2361] N: 00B0: 30 69 53 47 46 6F 65 6E 4A 43 57 58 64 68 64 47 0iSGFoenJCWXdhdG [2022/08/29 10:11:28:2361] N: 00C0: 6C 4F 65 54 68 75 59 56 56 6C 57 45 68 6B 57 6B lOeThuYVVlWEhkWk [2022/08/29 10:11:28:2362] N: 00D0: 64 57 54 45 56 6D 4E 32 4E 68 65 57 68 52 59 6C dWTEVmN2NheWhRYl [2022/08/29 10:11:28:2362] N: 00E0: 63 79 5A 33 68 42 61 55 4A 5A 5A 7A 30 69 20 48 cyZ3hBaUJZZz0i H [2022/08/29 10:11:28:2363] N: 00F0: 54 54 50 2F 31 2E 31 0D 0A 50 72 61 67 6D 61 3A TTP/1.1..Pragma: [2022/08/29 10:11:28:2364] N: 0100: 20 6E 6F 2D 63 61 63 68 65 0D 0A 43 61 63 68 65 no-cache..Cache [2022/08/29 10:11:28:2364] N: 0110: 2D 43 6F 6E 74 72 6F 6C 3A 20 6E 6F 2D 63 61 63 -Control: no-cac [2022/08/29 10:11:28:2364] N: 0120: 68 65 0D 0A 48 6F 73 74 3A 20 69 61 74 2D 61 70 he..Host: iat-ap [2022/08/29 10:11:28:2364] N: 0130: 69 2E 78 66 79 75 6E 2E 63 6E 0D 0A 4F 72 69 67 i.xfyun.cn..Orig [2022/08/29 10:11:28:2365] N: 0140: 69 6E 3A 20 68 74 74 70 73 3A 2F 2F 69 61 74 2D in: https://iat- [2022/08/29 10:11:28:2365] N: 0150: 61 70 69 2E 78 66 79 75 6E 2E 63 6E 0D 0A 55 70 api.xfyun.cn..Up [2022/08/29 10:11:28:2365] N: 0160: 67 72 61 64 65 3A 20 77 65 62 73 6F 63 6B 65 74 grade: websocket [2022/08/29 10:11:28:2366] N: 0170: 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 55 70 ..Connection: Up [2022/08/29 10:11:28:2367] N: 0180: 67 72 61 64 65 0D 0A 53 65 63 2D 57 65 62 53 6F grade..Sec-WebSo [2022/08/29 10:11:28:2367] N: 0190: 63 6B 65 74 2D 4B 65 79 3A 20 50 46 69 39 71 42 cket-Key: PFi9qB [2022/08/29 10:11:28:2367] N: 01A0: 43 5A 63 33 36 47 76 47 4F 4A 67 77 5A 54 77 51 CZc36GvGOJgwZTwQ [2022/08/29 10:11:28:2368] N: 01B0: 3D 3D 0D 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 ==..Sec-WebSocke [2022/08/29 10:11:28:2368] N: 01C0: 74 2D 50 72 6F 74 6F 63 6F 6C 3A 20 6C 77 73 2D t-Protocol: lws- [2022/08/29 10:11:28:2369] N: 01D0: 6D 69 72 72 6F 72 2D 70 72 6F 74 6F 63 6F 6C 0D mirror-protocol. [2022/08/29 10:11:28:2369] N: 01E0: 0A 53 65 63 2D 57 65 62 53 6F 63 6B 65 74 2D 56 .Sec-WebSocket-V [2022/08/29 10:11:28:2370] N: 01F0: 65 72 73 69 6F 6E 3A 20 31 33 0D 0A 0D 0A ersion: 13.... [2022/08/29 10:11:28:2370] N: the LWS_TLS_LOG_PLAINTEXT_TX is GET /v2/iat?authorization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iSGFoenJCWXdhdGlOeThuYVVlWEhkWkdWTEVmN2NheWhRYlcyZ3hBaUJZZz0i HTTP/1.1 Pragma: no-cache Cache-Control: no-cache Host: iat-api.xfyun.cn Origin: https://iat-api.xfyun.cn Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: PFi9qBCZc36GvGOJgwZTwQ== Sec-WebSocket-Protocol: lws-mirror-protocol Sec-WebSocket-Version: 13

. [2022/08/29 10:11:28:2373] W: [wsicli|1|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_write: lws_ssl_capable_write n 510 [2022/08/29 10:11:28:2374] W: [wsicli|1|WS/h1/default/iat-api.xfyun.cn]: lws_http_client_socket_service: lws_http_client_socket_service n 510 [2022/08/29 10:11:28:2567] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read start [2022/08/29 10:11:28:2568] N: 0x55af1e88dbb0: lws_buflist_aware_read: buflist empty [2022/08/29 10:11:28:2569] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read token orization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYX... [2022/08/29 10:11:28:2570] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_read: lws_ssl_capable_read 123456 [2022/08/29 10:11:28:2570] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_read: lws_ssl_capable_read buf orization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJl... [2022/08/29 10:11:28:2571] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_read: lws_ssl_capable_read SSL_want_read 2222 [2022/08/29 10:11:28:2571] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read n -4, bnds 0 [2022/08/29 10:11:28:2587] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read start [2022/08/29 10:11:28:2588] N: 0x55af1e88dbb0: lws_buflist_aware_read: buflist empty [2022/08/29 10:11:28:2588] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read token orization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYX... [2022/08/29 10:11:28:2589] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_read: lws_ssl_capable_read 123456 [2022/08/29 10:11:28:2590] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_ssl_capable_read: lws_ssl_capable_read buf orization=YXBpX2tleT0iMGQ0MDI2NjRlM2VlOWMwZmNlZmI1NDc5YWRmZGRlMDkiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJl... [2022/08/29 10:11:28:2590] N: lws_ssl_capable_read: len 220 [2022/08/29 10:11:28:2590] N: [2022/08/29 10:11:28:2591] N: 0000: 48 54 54 50 2F 31 2E 31 20 34 30 31 20 55 6E 61 HTTP/1.1 401 Una [2022/08/29 10:11:28:2591] N: 0010: 75 74 68 6F 72 69 7A 65 64 0D 0A 44 61 74 65 3A uthorized..Date: [2022/08/29 10:11:28:2591] N: 0020: 20 4D 6F 6E 2C 20 32 39 20 41 75 67 20 32 30 32 Mon, 29 Aug 202 [2022/08/29 10:11:28:2592] N: 0030: 32 20 31 30 3A 31 31 3A 32 37 20 47 4D 54 0D 0A 2 10:11:27 GMT.. [2022/08/29 10:11:28:2592] N: 0040: 43 6F 6E 74 65 6E 74 2D 54 79 70 65 3A 20 61 70 Content-Type: ap [2022/08/29 10:11:28:2592] N: 0050: 70 6C 69 63 61 74 69 6F 6E 2F 6A 73 6F 6E 3B 20 plication/json; [2022/08/29 10:11:28:2593] N: 0060: 63 68 61 72 73 65 74 3D 75 74 66 2D 38 0D 0A 43 charset=utf-8..C [2022/08/29 10:11:28:2593] N: 0070: 6F 6E 6E 65 63 74 69 6F 6E 3A 20 6B 65 65 70 2D onnection: keep- [2022/08/29 10:11:28:2593] N: 0080: 61 6C 69 76 65 0D 0A 43 6F 6E 74 65 6E 74 2D 4C alive..Content-L [2022/08/29 10:11:28:2593] N: 0090: 65 6E 67 74 68 3A 20 34 33 0D 0A 53 65 72 76 65 ength: 43..Serve [2022/08/29 10:11:28:2594] N: 00A0: 72 3A 20 6B 6F 6E 67 2F 31 2E 33 2E 30 0D 0A 0D r: kong/1.3.0... [2022/08/29 10:11:28:2594] N: 00B0: 0A 7B 22 6D 65 73 73 61 67 65 22 3A 22 48 4D 41 .{"message":"HMA [2022/08/29 10:11:28:2594] N: 00C0: 43 20 73 69 67 6E 61 74 75 72 65 20 64 6F 65 73 C signature does [2022/08/29 10:11:28:2594] N: 00D0: 20 6E 6F 74 20 6D 61 74 63 68 22 7D not match"} [2022/08/29 10:11:28:2595] N: the LWS_TLS_LOG_PLAINTEXT_RX is HTTP/1.1 401 Unauthorized Date: Mon, 29 Aug 2022 10:11:27 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Content-Length: 43 Server: kong/1.3.0

{"message":"HMAC signature does not match"}0i HTTP/1.1 Pragma: no-cache Cache-Control: no-cache Host: iat-api.xfyun.cn Origin: https://iat-api.xfyun.cn Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: PFi9qBCZc36GvGOJgwZTwQ== Sec-WebSocket-Protocol: lws-mirror-protocol Sec-WebSocket-Version: 13

[2022/08/29 10:11:28:2598] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read n 220, bnds 0 [2022/08/29 10:11:28:2599] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_client_interpret_server_handshake: lws_client_interpret_server_handshake LWS_WITH_CONMON [2022/08/29 10:11:28:2599] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_client_interpret_server_handshake: lws_client_interpret_server_handshake LWS_WITH_CACHE_NSCOOKIEJAR [2022/08/29 10:11:28:2599] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_client_interpret_server_handshake: lws_client_interpret_server_handshake WSI_TOKEN_HTTP_CONTENT_LENGTH [2022/08/29 10:11:28:2600] N: lws_http_client_http_response 401 [2022/08/29 10:11:28:2600] N: Peer Cert CN : /C=CN/ST=Anhui/L=Hefei/OU=IT [2022/08/29 10:11:28:2601] N: Peer Cert issuer : /C=BE/O=GlobalSign nv-sa/CN=GlobalSign RSA OV SSL CA 2018 [2022/08/29 10:11:28:2601] N: Peer Cert Valid from: Mon Oct 18 02:09:05 2021 [2022/08/29 10:11:28:2602] N: Peer Cert Valid to : Sat Nov 19 02:09:05 2022 [2022/08/29 10:11:28:2603] N: Peer Cert usage bits: 0xa0 [2022/08/29 10:11:28:2603] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_client_interpret_server_handshake: lws_client_interpret_server_handshake LWS_ROLE_WS [2022/08/29 10:11:28:2604] W: [wsicli|0|WS/h1/default/iat-api.xfyun.cn]: lws_client_ws_upgrade: got bad HTTP response '401' [2022/08/29 10:11:28:2604] E: CLIENT_CONNECTION_ERROR: dumb: HS: ws upgrade unauthorized [2022/08/29 10:11:28:2605] N: lws_gate_accepts: on = 0 [2022/08/29 10:11:28:2606] N: lws_lc_untag: -- [wsicli|0|WS/h1/default/iat-api.xfyun.cn] (1) 5.136s [2022/08/29 10:11:28:2606] N: dumb: connecting [2022/08/29 10:11:28:2607] N: lws_lc_tag: ++ [wsicli|2|WS/h1/default/iat-api.xfyun.cn] (2) [2022/08/29 10:11:28:2687] W: [wsicli|1|WS/h1/default/iat-api.xfyun.cn]: lws_buflist_aware_read: lws_buflist_aware_read start [2022/08/29 10:11:28:2688] N: 0x55af1e891fc0: lws_buflist_aware_read: buflist empty`

Please help me to see where the problem is and where to start investigating,I grabbed the postman package with wireshare and compared libwebsocket, but I can't see where the problem is,please help me, thank you!

lws-team commented 2 years ago

You must urlencode http urlargs

https://en.wikipedia.org/wiki/Percent-encoding

coldlapy commented 2 years ago

What I don't understand is why postman and the browser's wss plugin are accessible. But I built a wss service with nginx and nodejs, which can be accessed with libwebsocket. It feels that the problem lies in the verification of the url, but what is the difference between libwebsocket and postman, as well as the browser's wss plug-in?

coldlapy commented 2 years ago

You must urlencode http urlargs

https://en.wikipedia.org/wiki/Percent-encoding

ok, thank you, i will try.

coldlapy commented 2 years ago

You must urlencode http urlargs

https://en.wikipedia.org/wiki/Percent-encoding

I use the url encoded by postman, which is also not possible. I use postman to access the encoded url, and it works. why, please help me