Использование geolocation.getCurrentPosition при тестировании в локальной сети - PullRequest
2 голосов
/ 21 апреля 2020

Я пытаюсь получить доступ к геолокации моего телефона через navigator.geolocation.getCurrentPosition, подключившись к веб-сайту на локальном компьютере через локальный адрес IPv4. Проблема в том, что при запуске кода с моего телефона я получаю сообщение об ошибке «Origin не имеет разрешения на использование сервиса геолокации». После исследования я считаю, что мой телефон блокирует этот метод браузера, потому что я не использую свой локальный веб-сайт через HTTPS или localhost.

Кто-нибудь знает, как я могу проверить это локально? Нужно ли публиковать sh мой код в разработке на веб-сервере с HTTPS, чтобы проверить это?

Любая помощь будет очень признательна. Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 30 апреля 2020

Вы можете легко запустить локальный HTTPS-сервер, используя пакет http-server NPM. Вы просто создаете свой собственный сертификат, используя openssl в том же каталоге, что и ваш сайт, используя что-то вроде этого:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

, и он будет работать, запуская сервер, выполнив:

http-server -S -C cert.pem -o -p 80

внутри каталога с вашим локальным сайтом. Позаботьтесь о именах файлов ключа и сертификата, потому что http-server имя файла ключа по умолчанию - key.pem, но, конечно, вы можете изменить его, используя параметр -K <filename>.

Вы можете даже использовать этот сертификат для других локальные серверы (Apache, Express, Nginx и др. c.) для обслуживания сайта по протоколу HTTPS с использованием этого сертификата. Chrome сайт будет помечен как незащищенный, потому что у вас будет самозаверяющий сертификат, но это не влияет на использование API геолокации, и вы сможете проверить его. И, как вы обнаружили, вы можете даже доверять этому самоподписанному сертификату и добавлять его в браузеры, например Chrome ( "создать доверенный самоподписанный сертификат SSL для localhost" ).

Также проверьте, есть ли у вас другие ресурсы, которые обслуживаются по одному HTTP на этой странице, потому что будут проблемы, если они есть. Вы должны создать простую страницу, содержащую код geolocation.getCurrentPosition, чтобы проверить его.

1 голос
/ 30 апреля 2020

Если вы используете chrome на своем мобильном телефоне, вы можете установить флаг для этого.

В chrome перейдите к:

chrome: // flags / # unsafely-Treat-Insecure-Origin-As-Secure

затем введите адрес, с которого вы обслуживаете свой сайт, и chrome будет рассматривать его как безопасный сайт

1 голос
/ 30 апреля 2020

, если вы используете браузер chrome на своем телефоне, что рекомендуется. Затем вы можете перейти к

chrome: // flags

и найти эти 2 параметра и включить их.

Разрешить недействительные сертификаты для ресурсов, загруженных с локального хоста.

и

Небезопасные источники считаются безопасными

0 голосов
/ 24 апреля 2020

Вам потребуется развернуть свой веб-сайт на производственном сервере, таком как heroku, aws или на любом другом производственном сервере по вашему выбору, чтобы иметь возможность получить то, что вы хотите.

Вы не можете запустить локальный сервер на своем смартфоне, потому что сайт может работать только локально на хост-системе, где он живет.

Надеюсь, это поможет!

...