Enable HTTP Geolocation For Local Firefox Debugging
Asked Answered
A

2

19

"A Geolocation request can only be fulfilled in a secure context"

Its great that HTTPS is needed for geolocation but I need to debug on insecure local server before it makes it to live.

I was hoping I could edit Firefoxes 'about:config' to disable this safeguard for debugging. How would I do this? Are there any other/better ways to debug location in insecure context? (mock https)

Ahola answered 6/10, 2017 at 2:4 Comment(1)
this: medium.freecodecamp.org/… sounds like a lot of work, but if you really need it you could try it ;) but im actualy wondering.. I have a project with geolocation on localhost and it actualy works for example in Firefox DevelopersPepsin
S
2

You can test on localhost without encryption

Firefox will not send Geolocation over a non secure connection and this behaviour cannot be disabled. However, localhost is considered to be a secure connection so that might be an option when testing. This also explains why Christopher Supertramp could try his code over http- he's on localhost.

This is from Mozilla documentation:

Locally delivered files such as http://localhost and file:// paths are considered to have been delivered securely.

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

Salangia answered 22/10, 2019 at 9:28 Comment(5)
Welcome to SO! Even if your answer is right, try to explain it a little bit. Besides, you are supporting one external link that can disappear, so better to explain your answer just in case that one disappear.Assizes
This might work if the hosname is localhost, but what if you are running with a different hostname mapped to 127.0.0.1?Rosalbarosalee
The behaviour can actually be changed by setting geo.security.allowinsecure to True (tested on Firefox 96)Cairn
Thanks @MattiaGalati that's what I was looking for. In FF 110 the flag must be added: it's not present out of the box.Glabella
why does it allow the geolocation, but returns undefined coords?Glabella
P
1

Im wondering why its still working for me but this is my code:

    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);
                                    }
                                }
                            }
                        });
                    }
                );
            });
      }
    }

the browser "question": the browser "question":

my console: enter image description here

I hope my code will help you ;)

Pepsin answered 18/7, 2018 at 13:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.