Функция getJSON получает данные из URL только на локальном хосте - PullRequest
0 голосов
/ 16 сентября 2018

Я использую нижеприведенную функцию для получения Континент-кода из API, который отлично работает на локальном хосте, но не работает в реальной среде, которая является веб-сайтом

$.getJSON('//www.geoplugin.net/json.gp?jsoncallback=?', function (data) {
  // console.log(JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data.geoplugin_continentCode));
});

Предупреждение, которое я вижу в консоли:

Загрузка не удалась для источника с кодом «https://www.geoplugin.net/json.gp?jsoncallback=jQuery16407901144106031991_1537089290623&_=1537089292750”.

Я не уверен, почему он не работает на веб-сайте https://www.example.com

Может ли версия SSL вызвать некоторые проблемы, так как я не уверенкак я попробовал это на скрипке, и он отлично работает http://jsfiddle.net/om8ahkp3/

ОБНОВЛЕНИЕ

Так как проблема была из-за проблемы с междоменным доменом, поскольку этот API-интерфейс использовал другой URL для версии ssl,я не смог использовать эту версию ssl, так как она не была бесплатной.

Так что в итоге я использовал другой API, у которого была бесплатная опция, также ограниченная до 50 тыс. запросов ежемесячно.

$.ajax({
                url: 'https://api.ipgeolocation.io/ipgeo?fields=is_eu& excludes=ip&apiKey=YOURKEY',
                dataType: 'json',
                success: function (json) {
                    console.log("json.is_eu " + json.is_eu);
                }
            });

1 Ответ

0 голосов
/ 16 сентября 2018

В чем вся проблема? Вы хотите получить доступ к третьему сайту (crossDomain). Итак, этот сайт решает, получить к нему доступ или нет.Когда сайт предоставляет услугу (похожую на geo услугу, которую вы использовали), он определяет, какая часть его услуг является бесплатной.

В вашем случае, если протокол вашего исходного сайта http (например, как localhost), а сайт dest (сайт поставщика услуг) тоже http, вы можете получить доступ к этой гео-услуге с помощью приведенного вышекод (потому что этот третий сайт позволяет это сейчас).Но если вы хотите получить доступ к этой услуге с сайта https (я думаю, что вы пытаетесь это сделать сейчас), geoPlugin не позволит вам легко или бесплатно!

В этом случае сайты назначения, предоставьте еще url s и определите уровни пользователя (для получения денег за специальные услуги.).

В действии, если ваш сайт dest был также для вас (что в данном случае не так), вы могли быдобавить необходимый доступ к конкретным ссылочным сайтам, но теперь ...

Я смотрю на его сайт, чтобы быть уверенным.Вы должны использовать этот URL в этом случае:

https://ssl.geoplugin.net/json.gp?k=yourAPICode

Но это еще не все!Что такое k в URL выше?Этот сайт пишет : «Для доступа SSL требуется ключ API, чтобы компенсировать цены сертификатов и стоимость € 12 в год.»

Я не знаю,но если вам это нужно, вам следует поискать бесплатные плагины (если они есть) или купить их.

...