ЧТО РАБОТАЕТ
Я создал простое веб-приложение в Flask , которое обеспечивает работу простого return render_template("index.html")
при доступе к корневому узлу через вебBrowser.
# app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def show_index():
return render_template("index.html")
if __name__ == "__main__":
app.run(port=80)
index.html - это простая страница, которая использует tracking.js для получения веб-камеры пользователя и отслеживания его лица в потоке живого видео.
Открытие cmd и ввод python app.py
приводит к Running on http://127.0.0.1:80/
Доступ к вышеупомянутому URL приводит к правильному отображению страницы, которая запрашивает у меня разрешение на использование камеры, открывает ееи правильно отслеживает мое лицо в прямом эфире видео.Так что пока все работает нормально.
ЧТО НЕ РАБОТАЕТ
Проблема, с которой я сталкиваюсь, возникает, когда я докеризирую свое приложение с помощью Docker .docker-machine ip
равно 192.168.99.100
Открытие cmd и ввод: docker run -p 4000:80 my_face_track_app
приводит к: Running on http://0.0.0.0:80/
Доступ к 192.168.99.100:4000 приводит к правильному отображению index.html
, но яМеня больше не спрашивают разрешения на камеру и осмотр консоли JS. Я прочитал следующее исключение:
getUserMedia() no longer works on insecure origins
Вот полный журнал ошибок:
![enter image description here](https://i.stack.imgur.com/UfLco.png)
Я знаю, что ошибка говорит мне, что я не обслуживаю страницу в HTTPS.
Кто-нибудь еще сталкивался с этой проблемой?Каково было бы правильное решение проблемы или возможный обход?Любая помощь будет высоко оценена, большое спасибо заранее
ЧТО Я ПОПЫТАЛ ДЕЛАТЬ, ЧТОБЫ РЕШИТЬ ПРОБЛЕМУ
С тех пор, как HTTPS обслуживал страницунеобходим для того, чтобы JS выполнил функцию getUserMedia()
Я думал об обслуживании моего приложения Flask с помощью SSL-сертификата, изменив app.py следующим образом:
# app.py
from flask import Flask, render_template
import OpenSSL
app = Flask(__name__)
@app.route("/")
def show_index():
return render_template("index.html")
if __name__ == "__main__":
app.run(port=80, ssl_context="adhoc")
Затем я закрепил приложение, создав новый образ.,Ввод:
docker run -p 443:80 facetrackapphttps
Результат:
Running on https://127.0.0.1:80
Так что да, здесь HTTPS включен: проблема в том, что порт 80 приложения HTTPS Flask сопоставлен с портом 443docker-machine ip
192.168.99.100.
Попытка доступа 192.168.99.100:443 не работает и ничего не отображается.
У кого-нибудь есть идеи о том, как это сделать?