我发现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中一切都很顺利。
2条答案
按热度按时间mqxuamgl1#
是的,VS Code对Web视图应用严格的内容安全策略。你必须明确地允许你所需要的。我有一个webview,它通过WebSocket连接到本地运行的web服务器。我的CSP规则是:
字符串
注意:这个CSP超越了http(s)连接,但也允许内联样式和脚本。所以你最好仔细检查一下,只允许绝对必要的!
l3zydbqr2#
这是因为vscode中的代理很久以前就设置好了。通过关闭代理,在webview和extension native中一切都很顺利。