Skip to content

语音对讲提示需要 HTTPS 或 localhost ​

通过内网 HTTP 地址打开 NexIoT,点击语音对讲时,可能出现以下提示:

语音对讲需要 HTTPS 或 localhost,请通过安全地址打开页面

如果暂时无法部署 HTTPS,可以在桌面版 Chrome 或 Edge 中,将指定的内网 HTTP 地址配置为安全来源,无需安装证书或修改平台代码。

适用范围

适用于固定电脑访问可信内网站点的场景。配置在访问页面的电脑和浏览器上生效,每台客户端需要分别设置。这个设置不会加密 HTTP 流量;面向大量用户或公网访问时,建议统一部署 HTTPS。

一、为什么会出现这个提示? ​

语音对讲需要浏览器采集麦克风,并进行实时音频处理。相关接口 getUserMedia 和 AudioWorklet 要求页面处于浏览器认可的安全上下文。

页面访问方式通常是否满足要求
使用有效且受信任证书的 https:// 地址是
本机的 http://localhost 或 http://127.0.0.1是
普通内网 HTTP 地址,例如 http://192.168.31.194否,需要额外配置
已通过下文浏览器设置认可的 HTTP 来源是,仍需允许麦克风权限

平台检查的是浏览器返回的安全上下文状态,并没有硬编码禁止 HTTP。浏览器配置生效后,现有检查即可通过。只删除平台提示或前端判断,无法解除浏览器对麦克风接口的限制。

localhost 指的是当前使用浏览器的电脑。把远程服务器地址直接替换为 localhost,不会自动连接到远程平台。

二、Chrome / Edge 配置步骤 ​

1. 打开浏览器配置页 ​

复制对应地址,粘贴到浏览器地址栏并回车。需要在地址栏打开,不是在搜索引擎中搜索。

浏览器配置地址
Google Chromechrome://flags/#unsafely-treat-insecure-origin-as-secure
Microsoft Edgeedge://flags/#unsafely-treat-insecure-origin-as-secure

找到 Insecure origins treated as secure,含义是“将不安全的来源视为安全来源”。

2. 填写前端访问地址 ​

在该选项的输入框中填写平台的来源地址:协议 + IP 或域名 + 端口(如果有)。请将以下示例替换为自己的实际地址。

例如,平时打开的平台地址是 http://test.iot.192886.xyz:81,填写:

text
http://test.iot.192886.xyz:81

语音对接

如果前端通过 8000 端口访问,填写:

text
http://192.168.31.194:8000
地址栏中的页面地址应填写的来源地址
http://192.168.31.194/videohttp://192.168.31.194
http://192.168.31.194:8000/videohttp://192.168.31.194:8000
http://test.iot.192886.xyz:81/video/iothttp://test.iot.192886.xyz:81

填写时注意:

  • 保留 http://,不要只填写 IP。
  • 非默认端口必须与实际访问端口一致。
  • 不填写 /video 等页面路径、查询参数或 # 后面的内容。
  • 填写浏览器地址栏中的前端来源。如果后端服务运行在 9092,而页面通过 80 端口访问,只填写后端地址不会生效。
  • IP 和域名是不同来源;如果两种方式都会使用,需要分别配置。
  • 多个来源使用英文逗号分隔,例如 http://192.168.31.194,http://192.168.31.194:8000。

3. 启用并重启浏览器 ​

将该选项设置为 Enabled(启用),然后点击页面上的 Relaunch / Restart(重启) 按钮。

请先保存其他标签页中尚未提交的内容。只刷新平台页面通常不足以使这个设置生效。

4. 允许麦克风并重试对讲 ​

重新打开平台,进入视频页面并点击语音对讲。浏览器询问麦克风权限时,选择 允许。

如果之前拒绝过权限,可以点击地址栏左侧的网站信息或权限图标,在网站设置中将麦克风改为允许,再刷新页面重试。操作系统也需要允许 Chrome / Edge 使用麦克风。

三、如何确认配置已经生效? ​

在 NexIoT 页面打开开发者工具并进入 Console(控制台)。Windows 通常可按 F12,macOS 可按 Command + Option + I。

先查看当前页面的来源,确认与配置项一致:

js
window.location.origin
// 示例结果:"http://192.168.31.194"

再分别执行:

js
window.isSecureContext
// 预期结果:true
js
typeof navigator.mediaDevices?.getUserMedia
// 预期结果:"function"

这两个结果说明页面已满足安全上下文及麦克风接口可用性检查。它们不代表麦克风已经获得授权,也不代表设备端或对讲连接已经就绪。 仍需实际点击对讲进行验证。

四、配置后仍不能对讲,如何排查? ​

现象排查方法
仍提示需要 HTTPS 或 localhost,isSecureContext 为 false比较 window.location.origin 与配置的来源,检查协议、域名或 IP、端口是否一致;确认已设为 Enabled 并重启浏览器。
配置了服务器地址,但换一台电脑访问仍报错设置在客户端浏览器上生效,需要在实际使用对讲的电脑上配置。Chrome 和 Edge 也需要分别配置。
提示“请允许浏览器使用麦克风”检查网站麦克风权限及操作系统隐私设置,允许当前浏览器使用麦克风。
找不到麦克风,或无法开始采集检查麦克风连接、系统输入设备和浏览器所选设备,确认麦克风可以正常录音。
安全上下文正常,但提示对讲连接超时或无法连接服务继续检查后端对讲服务、设备在线状态、设备对讲能力,以及反向代理是否支持对讲 WebSocket 连接。
页面被嵌入其他系统的 iframe 中先单独打开 NexIoT 页面验证;嵌入场景还受外层页面安全上下文和麦克风 Permissions Policy 限制,需要由集成方检查。
找不到该实验选项,或选项被组织策略禁用浏览器版本或管理策略可能限制该设置;可参考下文启动参数,受管电脑需由管理员确认是否允许,或使用 HTTPS。

“允许不安全内容”不是同一个设置

网站设置中的“允许不安全内容”主要处理混合内容加载,不能代替本文的安全来源配置,也不能直接解除 HTTP 页面采集麦克风的限制。

五、可选:通过启动参数指定来源 ​

桌面版 Chrome / Edge 也可通过以下启动参数指定来源:

text
--unsafely-treat-insecure-origin-as-secure="http://192.168.31.194"

将示例地址替换为实际前端来源。Windows 用户可以在浏览器快捷方式的“目标”中,在原有程序路径后追加一个空格和上述参数,保留原有程序路径及其引号。

使用前需要彻底退出浏览器,包括后台进程,再从带参数的快捷方式启动。如果浏览器仍在运行,新窗口可能沿用已有进程而没有应用参数。该方式仅对使用此参数启动的浏览器进程生效,仍需允许麦克风权限,也可能受到组织管理策略限制。

不需要额外添加 --disable-web-security 或全局忽略证书错误的参数。

六、恢复默认设置 ​

不再需要内网 HTTP 对讲,或已经切换到 HTTPS 后,可回到同一个浏览器配置页,删除不再使用的来源;全部停用时,将选项改回 Default 并重启浏览器。

如果使用了启动参数,则删除快捷方式中的对应参数,彻底退出浏览器后重新启动。

参考资料 ​