VSCODE扩展无法与远程websocket服务器建立WebSocket连接

q5lcpyga  于 2023-08-05  发布在  Vscode
关注(0)|答案(2)|浏览(300)

我发现vscode扩展的webview中的WebSocket无法与remote websocket服务器建立连接。
我使用的URL类似于ws://192.168.5.33:8081,开发人员工具控制台显示的信息类似于

WebSocket connection to 'ws://192.168.5.33:8081/' failed:

字符串
它看起来不像违反任何内容安全策略,否则,将显示。
开发工具网络选项卡显示像只是一个请求,没有响应.我确信WebSocket服务器运行良好,因为我运行相同的代码in browser而不是vscode webview扩展,与远程服务器连接,发现它运行良好。
另外,扩展webview可以很好地与本地WebSocket服务器(如ws://127.0.0.1:8081)配合使用
后来,我不得不将WebSocket客户端的代码从webview移动到带有const WebSocket = require('ws');的扩展本机,以使用ws lib。
也会失败。
同样,它在浏览器中运行WebSocket客户端而不是vscode扩展来连接远程服务器。

[回答我愚蠢的问题]
这是因为vscode中的代理很久以前就设置好了。通过关闭代理,在webview和extension native中一切都很顺利。

mqxuamgl

mqxuamgl1#

是的,VS Code对Web视图应用严格的内容安全策略。你必须明确地允许你所需要的。我有一个webview,它通过WebSocket连接到本地运行的web服务器。我的CSP规则是:

<!doctype html><html lang="en">
<head>
<meta http-equiv="Content-Security-Policy" content="default-src *; img-src http: https:;
    script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'unsafe-inline' http: https: data: *;">
...

字符串
注意:这个CSP超越了http(s)连接,但也允许内联样式和脚本。所以你最好仔细检查一下,只允许绝对必要的!

l3zydbqr

l3zydbqr2#

这是因为vscode中的代理很久以前就设置好了。通过关闭代理,在webview和extension native中一切都很顺利。

相关问题