部署站点后,我无权访问 navigator.mediaDevices。我该如何解决?
I do not have have access to navigator.mediaDevices when the site is deployed. How do I fix this?
我目前正在尝试使用 WebRTC api 并让一切在本地运行。
当我部署到 surge.sh
时,我无法访问 navigator.mediaDevices
对象。我该如何解决?
下面这行代码是我遇到问题的地方。
const stream = await navigator.mediaDevices.getDisplayMedia({video: {mediaSource: 'screen'}});
我收到以下错误消息:
TypeError: Cannot read property 'getDisplayMedia' of undefined
您需要 https。
navigator.mediaDevices
现在仅在 Chrome 74, Firefox 68, and in the spec 的 SecureContext 中可用,这意味着该对象将在不安全的上下文 (http) 中丢失。
正如 jib 回答的那样,当网络服务器使用 HTTP 方案而不托管在 localhost
上时,navigator.mediaDevices
不可用,但在 chrome/chromium 中除外:
$ chromium --unsafely-treat-insecure-origin-as-secure=http://WEBSERVER_FQDN:PORT_NUMBER
--unsafely-treat-insecure-origin-as-secure
命令行选项允许放宽限制。当 HTTPS 尚未设置或您需要分析原始未加密的 HTTP 消息(即 wireshark)时,它对 developing/debugging 很有用。
我目前正在尝试使用 WebRTC api 并让一切在本地运行。
当我部署到 surge.sh
时,我无法访问 navigator.mediaDevices
对象。我该如何解决?
下面这行代码是我遇到问题的地方。
const stream = await navigator.mediaDevices.getDisplayMedia({video: {mediaSource: 'screen'}});
我收到以下错误消息:
TypeError: Cannot read property 'getDisplayMedia' of undefined
您需要 https。
navigator.mediaDevices
现在仅在 Chrome 74, Firefox 68, and in the spec 的 SecureContext 中可用,这意味着该对象将在不安全的上下文 (http) 中丢失。
正如 jib 回答的那样,当网络服务器使用 HTTP 方案而不托管在 localhost
上时,navigator.mediaDevices
不可用,但在 chrome/chromium 中除外:
$ chromium --unsafely-treat-insecure-origin-as-secure=http://WEBSERVER_FQDN:PORT_NUMBER
--unsafely-treat-insecure-origin-as-secure
命令行选项允许放宽限制。当 HTTPS 尚未设置或您需要分析原始未加密的 HTTP 消息(即 wireshark)时,它对 developing/debugging 很有用。