16

“地理定位请求只能在安全的环境中完成”

地理位置需要 HTTPS 很好,但我需要在不安全的本地服务器上进行调试,然后才能使其生效。

我希望我可以编辑 Firefox 'about:config' 以禁用此保护措施以进行调试。我该怎么做?在不安全的上下文中是否有其他/更好的方法来调试位置?(模拟 https)

4

2 回答 2

1

我想知道为什么它仍然对我有用,但这是我的代码:

    function geolocate() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(
            function(position) {
                let lat = position.coords.latitude;
                let lng = position.coords.longitude;
                var geolocation = {
                    lat: lat,
                    lng: lng
                };
                document.getElementById('lat').value = lat;
                document.getElementById('lng').value = lng;
                console.log("----------------------------------------------");
                console.log("Found Location: "+ lat + " / " + lng);

                var google_maps_geocoder = new google.maps.Geocoder();
                google_maps_geocoder.geocode(
                    { 'latLng': geolocation },
                    function( results, status ) {
                        let street = results[0].address_components[1].long_name;
                        let number = results[0].address_components[0].long_name;
                        let plz = results[0].address_components[6].long_name;
                        let city = results[3].address_components[0].long_name;
                        //let country = results[7].formatted_address;
                        let full = street+" "+number+", "+plz+" "+city;

                        // write the values in the fields
                        document.getElementById('autocomplete').value = full;
                        document.getElementById('route').value = street;
                        document.getElementById('street_number').value = number;
                        document.getElementById('postal_code').value = plz;
                        document.getElementById('locality').value = city;
                        //document.getElementById('country').value = country;
                        console.log("User Address: "+street+" "+number+", "+plz+" "+city);
                        $.ajax({
                            type: 'POST',
                            url: 'include/set-location.inc.php',
                            data: {lat: lat, lng: lng, street: street, number: number, plz: plz, city: city, full: full},
                            dataType: 'json',
                            success: function(response) {
                                if(response.status === 'success') {
                                    console.log("Saved address in a cookie!");
                                    if (site === "jobs") {
                                        location.reload(true);
                                    }
                                }
                            }
                        });
                    }
                );
            });
      }
    }

浏览器“问题”: 浏览器

我的控制台: 在此处输入图像描述

我希望我的代码对你有帮助;)

于 2018-07-18T13:54:18.927 回答
1

您可以在没有加密的情况下在 localhost 上进行测试

Firefox 不会通过非安全连接发送地理定位,并且无法禁用此行为。但是,localhost 被认为是安全连接,因此在测试时可能是一个选项。这也解释了为什么 Christopher Supertramp 可以通过 http 尝试他的代码——他在本地主机上。

这是来自 Mozilla 文档:

本地交付的文件,例如http://localhost和 file:// 路径被认为已安全交付。

https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts

于 2019-10-22T09:28:37.860 回答