Ответ геолокации 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");