Ответ геолокации country_name не работает в Safari

Моя геолокационная страна-респондент работает в Chrome и Firefox, но не в Safari. Как я могу это исправить?

Javascript:

$.get("http://freegeoip.net/json/", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#country_code").html(response.country_code);
    if(response.country_code=='NL'||response.country_code=='US'){
        document.getElementById(response.country_code).style.display = "block";
    }
}, "jsonp");

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="NL">THE NL</div>
<div id="US">THE US</div>

CSS:

#NL { display:none;} 
#US { display:none;} 

демонстрация

1 ответ

Решение

Скрипка работает в последнем Safari на High Sierra. Я также проверил это в Chrome, и он не работал из-за плагина блокировки рекламы, который блокирует запрос к http://freegeoip.net/json/

Чтобы преодолеть эту проблему, вы можете создать прокси на своем бэкэнде (создайте простой скрипт, который будет выполнять запрос GET за вас, поэтому запрос клиента будет точно таким же, как и его запрос).

Но ошибка, которую вы заметили The page was not allowed to run insecure content from freegeoip.net/json о чем-то другом - вы пытаетесь сделать запрос на незащищенный сайт (http:// вместо https://).

К счастью, этот сервис также работает по https, просто добавьте s на ссылку, и она должна работать.

$.get("https://freegeoip.net/json/", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#country_code").html(response.country_code);
    if(response.country_code=='NL'||response.country_code=='US'){
        document.getElementById(response.country_code).style.display = "block";
    }
}, "jsonp");
Другие вопросы по тегам