WebアプリでgetUserMedia()
を使用していますが、ローカルホストでアプリをテストすると正常に機能します。しかし、ラップトップをサーバーとして扱い、Google Chrome私のAndroid電話のブラウザ)でアプリを起動すると、エラーが発生します。
getUserMedia()は、安全でないオリジンでは機能しなくなりました。この機能を使用するには、アプリケーションをHTTPSなどの安全なオリジンに切り替えることを検討する必要があります。詳細については、 https://goo.gl/rStTGz を参照してください。
[ https://goo.gl/rStTGz] [1] をチェックしたところ、安全でないオリジンではgetUserMedia()
が非推奨になっていることがわかりました。開発モードについては、
chrome --unsafely-treat-insecure-Origin-as-secure = "example.com"フラグを使用して実行できます(「example.com」を実際にテストするOriginに置き換えます) )
このフラグはどこでどのように設定できますか?他に選択肢はありますか?
localhost
をデバイスに移動します1つの方法は、AndroidデバイスでHTTPサーバーを実行することです。 この質問 に対する回答のコンセンサスは、 NanoHTTPD を試す価値があるということです。既製のアプリケーションが必要な場合は、Google Playストアでhttp server for Android
のWeb検索が表示されます Simple HTTP Server Webアプリケーションのクライアント側をデバイスにコピーして、サーバーの場合、Androidの場合はChromeでhttp://localhost:12345
を開くことができるはずです。
既存のテストサーバーを潜在的に信頼できるオリジンに変えることで、--unsafely-treat-insecure-Origin-as-secure
を使用せずにセキュアコンテキストのみの機能をテストできます。次の手順を実行します:
dehydrated
ACMEクライアントと互換性のあるDNSホスティングをバンドルするレジストラ でドメインをまだ所有していない場合は、ドメインを登録します。これには料金が発生し、ドメインをアクティブにしておく限り繰り返し発生します。NameVirtualHost
などを使用して、このサブドメインのポート443でHTTPSに応答するようにテストWebサーバーを構成します。dehydrated
ACME client をDNSホストの適切なdns-01
フックとともに使用して、テストWebサーバーのLet'sEncryptから証明書を取得します。私もこの問題に直面しましたが、Chromium、Ubuntuで。コンソールでこのコマンドを実行する際の問題を解決しました。
chromium-browser --unsafely-treat-insecure-Origin-as-secure="http://localhost.dev:3000" --user-data-dir=~/.config/chromium/Profile 1
ここで、localhost.dev:3000はWebサイトです。
他のシステム情報については、以下を参照してください。
--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ページでフラグを設定することもできます。
これは、chrome://flags/
またはabout://flags
から実行できます。
about://flags
に移動し、unsafely-treat-insecure-Origin-as-secure
フラグを検索して、有効にします。安全なものとして扱いたいオリジンを提供する必要があります。
複数の原点をカンマ区切りの値として入力できます。
プロトコル部分も重要であり、IPアドレスまたはドメイン名を指定するだけでは不十分であることに注意してください。例えば。 http://in http://192.168.43.45
。
以下は私の携帯電話のスクリーンショットです。
モバイル:Samsung Galaxy S10e
Androidバージョン:10(Android 10)
Google Chrome version:79.0.3945.136
私が構築しているWebサイトのローカルテストでは、ジオロケーションが必要でした。地理位置情報は安全な場所で許可されています。 https証明書付きの本番サーバーはありますが、毎回コンテンツをアップロードする必要がある場合、開発とデバッグのプロセスが遅くなります。