25

getUserMedia()在我的网络应用程序中使用它在本地主机上测试我的应用程序时工作正常。但是,如果我将笔记本电脑视为服务器并在我的 android 手机的 Google Chrome 浏览器中启动应用程序,则会出现错误:

getUserMedia() 不再适用于不安全的来源。要使用此功能,您应该考虑将应用程序切换到安全源,例如 HTTPS。有关详细信息,请参阅https://goo.gl/rStTGz 。

当我检查 [ https://goo.gl/rStTGz][1]时,我知道它getUserMedia()在不安全的来源上已被弃用。写的是开发模式,

您可以使用 --unsafely-treat-insecure-origin-as-secure="example.com" 标志运行 chrome(将“example.com”替换为您实际要测试的来源)

如何以及在哪里设置此标志?还有其他选择吗?

4

3 回答 3

6

这可以从chrome://flags/或完成about://flags

转到about://flags,搜索unsafely-treat-insecure-origin-as-secure标志,然后启用它。您必须提供您希望被视为安全的来源。
可以以逗号分隔值的形式输入多个来源。
进行此更改后重新启动浏览器。

请注意,协议部分也很重要,仅指定 IP 地址或域名是不够的。例如。http://http://192.168.43.45. 如果您不使用端口 80,那么您可能也必须指定它。

以下是我手机的截图。

手机:三星 Galaxy S10e
Android 版本:10 (Android 10)
Google Chrome 版本79.0.3945.136

关于 Android 上 chrome 中的标志

对于我正在构建的网站的本地测试,需要地理定位。允许在安全位置进行地理定位。我确实有一个带有 HTTPS 证书的生产服务器,但是如果我每次都必须向它上传内容,那么开发和调试过程就会变得太慢。

更多信息

  1. https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features
于 2020-04-02T02:18:35.640 回答
2

移动localhost到设备

一种方法是在您的 Android 设备上运行 HTTP 服务器。这个问题的答案一致认为NanoHTTPD值得一试。如果您想要一个现成的应用程序,请在 Google Play 商店中搜索http server for android出现的Simple HTTP Server 。将 Web 应用程序的客户端复制到设备并启动服务器后,您应该能够http://localhost:12345在 Chrome for Android 中打开。

或者让您的测试服务器安全

--unsafely-treat-insecure-origin-as-secure您可以通过将现有的测试服务器转变为潜在的可信赖来源来测试仅安全上下文的功能而无需使用。按着这些次序:

  1. 如果您还没有在捆绑了与ACME 客户端兼容的 DNS 托管的注册商dehydrated处拥有域,请注册一个。这会产生费用,只要您保持域处于活动状态,就会产生费用。
  2. 将子域指向您的测试 Web 服务器的内部 IP 地址。它不需要可以从 Internet 访问。
  3. 配置您的测试 Web 服务器以响应此子域的端口 443 上的 HTTPS,使用NameVirtualHost等。
  4. 为您的 DNS 主机使用带有适当钩子的dehydratedACME 客户端dns-01,从 Let's Encrypt 为您的测试 Web 服务器获取证书。
  5. 将此证书安装到您的测试 Web 服务器中。
于 2016-11-27T20:21:06.170 回答
-1

我也遇到过这个问题,但是在 Chromium 和 Ubuntu 中。我解决了在控制台中运行此命令的问题:

chromium-browser --unsafely-treat-insecure-origin-as-secure="http://localhost.dev:3000" --user-data-dir=~/.config/chromium/Profile 1

其中 localhost.dev:3000 是您的网站。

有关其他系统信息:

数据目录在哪里

如何启动 chrome 和设置键

--unsafely-treat-insecure-origin-as-secure关于标志 的简短信息:

将给定的(不安全的)来源视为安全来源。可以提供多个来源。除非还提供了 --user-data-dir,否则无效。例子:

--unsafely-treat-insecure-origin-as-secure=http://a.test,http://b.test --user-data-dir=/test/only/profile/dir

我没有检查,但对于 android,您也许还可以在 chrome://flags 页面上设置标志。

于 2016-04-30T07:52:08.247 回答