我在我的网络应用中使用getUserMedia()
,当我在localhost上测试我的应用时效果很好。但如果我将笔记本电脑视为服务器并在我的Android手机的谷歌Chrome浏览器中启动应用程序,它会给我错误:
getUserMedia()不再适用于不安全的起源。要用这个 功能,您应该考虑将应用程序切换为安全的 原点,例如HTTPS。有关详细信息,请参阅https://goo.gl/rStTGz。
当我检查[https://goo.gl/rStTGz][1]时,我知道getUserMedia()
在不安全的起源上被弃用了。它写的是开发模式,
您可以使用。运行chrome --unsafely-treat-insecure-origin-as-secure =“example.com”标志(用你想要测试的原点替换“example.com”)
我如何以及在哪里设置此标志?还有其他选择吗?
答案 0 :(得分:2)
这可以从chrome://flags/
或about://flags
完成。
转到about://flags
,搜索unsafely-treat-insecure-origin-as-secure
标志并启用它。您必须提供要视为安全的来源。
可以输入多个原点作为逗号分隔值。
请注意,协议部分也很重要,并且指定IP地址或域名还不够。例如。 http:// 在http://192.168.43.45
中。
以下是我手机的屏幕截图。
手机:三星Galaxy S10e
Android版本:10(Android 10)
Google Chrome版本:79.0.3945.136
要对我正在构建的网站进行本地测试,需要进行地理位置定位。 允许在安全位置进行地理位置定位。我确实有一个带有https证书的生产服务器,但是如果我每次都必须向其上载内容,则开发和调试过程将变得太慢。
答案 1 :(得分:0)
我也面临这个问题,但在Chromium,Ubuntu。我在控制台中运行此命令解决了这个问题:
chromium-browser --unsafely-treat-insecure-origin-as-secure="http://localhost.dev:3000" --user-data-dir=~/.config/chromium/Profile 1
其中localhost.dev:3000是您的网站。
对于其他系统信息:
how to launch chrome and set keys
有关--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页面上设置标志。
答案 2 :(得分:0)
5.0
移至设备一种方法是在Android设备上运行HTTP服务器。回答this question的共识是NanoHTTPD值得尝试。如果您需要现成的应用程序,则会在Google Play商店中对localhost
进行网络搜索Simple HTTP Server。将Web应用程序的客户端复制到设备并启动服务器后,您应该可以在Chrome for Android中打开http server for android
。
您可以通过将现有测试服务器转变为可信赖的来源,在不使用http://localhost:12345
的情况下测试仅安全上下文功能。请按照以下步骤操作:
dehydrated
ACME client拥有域名,请注册一个域名。这会产生费用,只要您保持域名有效就会再次发生。--unsafely-treat-insecure-origin-as-secure
等配置您的测试网络服务器以响应此子域的端口443上的HTTPS。dehydrated
ACME client与DNS主机相应的NameVirtualHost
挂钩,从您的测试网络服务器的Let's Encrypt获取证书。