Html 未捕获的安全性错误:无法构造';WebSocket';:不能从通过HTTPS加载的页面启动不安全的WebSocket连接
我使用的是GlassFish服务器4.1/JavaEE7。在我的web.xml文件中,我提到了以下安全约束Html 未捕获的安全性错误:无法构造';WebSocket';:不能从通过HTTPS加载的页面启动不安全的WebSocket连接,html,jakarta-ee,ssl,websocket,java-ee-7,Html,Jakarta Ee,Ssl,Websocket,Java Ee 7,我使用的是GlassFish服务器4.1/JavaEE7。在我的web.xml文件中,我提到了以下安全约束 用户约束 提供一个名字 /行政方/* 得到 邮递 角色管理 保密的 其他当局也是如此 由于传输保证设置为机密,因此与指定URL模式匹配的网页/admin\u-side/*通过安全通道(HTTPS)运行 在使用WebSocket时,如下所示(JavaScript) 它无法建立初始握手。浏览器在浏览器控制台上显示以下警告 [blocked] The page at 'https://loc
用户约束
提供一个名字
/行政方/*
得到
邮递
角色管理
保密的
其他当局也是如此
由于传输保证
设置为机密
,因此与指定URL模式匹配的网页/admin\u-side/*
通过安全通道(HTTPS
)运行
在使用WebSocket时,如下所示(JavaScript)
它无法建立初始握手。浏览器在浏览器控制台上显示以下警告
[blocked] The page at 'https://localhost:8181/Context/admin_side/Category' was loaded over HTTPS, but ran insecure content from 'ws://localhost:8080/Context/Push': this content should also be loaded over HTTPS.
Uncaught SecurityError: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
当web.xml中的
部分被完全删除时,网页将在HTTP
上运行。之后,改变,
var ws = new WebSocket("ws://localhost:8181/Context/Push");
到
很好
如何使websocket在安全通道上工作?尝试使用
wss://
,这表明您需要安全的websocket连接。浏览器将阻止您从安全页面创建不安全的连接,因为它知道,由于您使用https://
请求页面,因此存在传输安全要求
如果您的WebSocket服务器与YoutWeb服务器一起运行,它可能会使用相同的安全证书,您不需要做任何操作。如果不起作用,请检查您的WebSocket服务器文档,了解如何添加证书和启用
wss://
是!成功了。我以前从未见过wss://。请加上它作为答案。谢谢,谢谢!我还添加了一些附加信息以供将来参考。
var ws = new WebSocket("ws://localhost:8181/Context/Push");
var ws = new WebSocket("ws://localhost:8080/Context/Push");