заблокирован Доступ к геолокации был заблокирован через безопасное соединение со смешанным контентом до https://localhost:3000 - PullRequest
0 голосов
/ 28 ноября 2018

Я реализовал настройку devise omniauth, и когда я вошел в систему через Facebook, Twitter или Google, html5 geolocation возвращает position unavailable error.Но когда я захожу как обычный devise user, он работает просто отлично!Как я могу разрешить доступ к html5 geolocation в моем приложении rails при входе в учетную запись социальной сети?

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(setGeoCookie,showError);
    } else {
        alert("Geolocation is not supported by this browser.");
    }
}


function showError(error) {
switch(error.code) {
    case error.PERMISSION_DENIED:
        window.location = window.location;
        window.alert("Permission denied");
        break;
    case error.POSITION_UNAVAILABLE:
        window.location = window.location;
        window.alert("Location information is unavailable.");
        break;
    case error.TIMEOUT:
        window.location = window.location;
        window.alert("The request to get user location timed out.");

        break;
    case error.UNKNOWN_ERROR:
        window.location = window.location;
        window.alert("An unknown error occurred.");
        break;
}
location.reload();
}

Обновление 1

Я изменил код на следующий, и я получаю следующие ошибки в консоли браузера:

Origin does not have permission to use Geolocation service
[blocked] Access to geolocation was blocked over secure connection with mixed content to https://localhost:3000.


function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(success, error, options);
    } else {
        alert("Geolocation is not supported by this browser.");
    }
}


var options = {
    enableHighAccuracy: true,
    timeout: 5000,
    maximumAge: 0
};

function success(pos) {
    var crd = pos.coords;

    console.log('Your current position is:');
    console.log(`Latitude : ${crd.latitude}`);
    console.log(`Longitude: ${crd.longitude}`);
    console.log(`More or less ${crd.accuracy} meters.`);
}

function error(err) {
    console.warn(`ERROR(${err.code}): ${err.message}`);
}

Есть идеи, как это разблокировать?

1 Ответ

0 голосов
/ 30 ноября 2018

Это не проблема рельсов, а проблема Javascript.Где-то в вашем шаблоне, CSS или Javascript вы загружаете что-то из http вместо https.Используйте инспектора вашего браузера, чтобы найти виновника.

...