JavaScript, запрос GET, конфликт c https

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Вывод погоды при помощи openweathermap api JavaScript

#1 3 августа 2017 в 08:33
Добрый день. Вывожу на сайт погоду при помощи openweathermap api. Столкнулся с проблемой сайт меня у работает на защищенном протоколе https а сервис погоды на http, когда сайт открывается по протоколу https, в отладчике браузера выводится ошибка


Mixed Content: The page at 'УРЛ моего сайта' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'УРЛ Сервиса погоды'. This request has been blocked; the content must be served over HTTPS.
send @ jquery.min.js:4
на сколько я понял пишет что адрес которому идет запрос должен быть на HTTPS, но этот сервис работает только на HTTP

код такой


<div id="weather">Temperature <span id="temp"> </span>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">
//<![CDATA[

//]]>
</script>
<script>
//<![CDATA[
$.get("http://api.openweathermap.org/data/2.5/weather?q=London,us&units=Imperial&APPID=ключАПИ", function(data){
console.log(data);

$("#temp").html(data.main.temp);

});
//]]>
</script>


Можно ли как то обойти это правило?

Хочется подключить именно этот сервис так как он бесплатен, и работает по АПИ.
#2 3 августа 2017 в 09:46
Юрий Юрьевич, а что мешает поменять

$.get("http://api.openweathermap.org/data/2.5/weather?q=London,us&units=Imperial&APPID=ключАПИ", function(data){
console.log(data);

Юрий Юрьевич
на
$.get("https://api.openweathermap.org/data/2.5/weather?q=London,us&units=Imperial&APPID=ключАПИ", function(data){
console.log(data);
#3 3 августа 2017 в 09:55


Юрий Юрьевич, а что мешает поменять

$.get("http://api.openweathermap.org/data/2.5/weather?q=London,us&units=Imperial&APPID=ключАПИ", function(data){
console.log(data);

Юрий Юрьевич
на
$.get("https://api.openweathermap.org/data/2.5/weather?q=London,us&units=Imperial&APPID=ключАПИ", function(data){
console.log(data);

kirkr

Мешает, к сожалению, то что сервис не доступен по протоколу https
#4 3 августа 2017 в 10:00
Меняйте поставщика погоды, не обойти раз нет. Это у вас в компе консоль показывает ошибку, а в мобильных браузерах варнинги прям в браузере пользователям.
#5 3 августа 2017 в 10:07
Юрий Юрьевич, Тогда по крону выполняйте скрипт, а результат заносите в базу к себе, из базы вызывайте данные.
#6 3 августа 2017 в 14:24

Можно ли как то обойти это правило?

Юрий Юрьевич
Лучше всего написать компонент, который будет запрашивать погоду из php. И выводить виджет на сайте.

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

kirkr
Это если погода для одного населенного пункта… А если погода для каждого пользователя своя, то не вариант.
#7 3 августа 2017 в 14:48

А если погода для каждого пользователя своя, то не вариант.

@SmartControl
А вариант при каждом посещении ждать ответа api? не проще тогда по списку городов пройтись? Тем более откуда у вас клиент втыкает ?q=London,us ????
#8 3 августа 2017 в 15:01
Всем спасибо, за ответы, но хочется подобный способ на JavaScript. Понятно что сточки зрения оптимизации запросов к АПИ лучше написать приложение, значения записать в БД, и выводить через компонент, но это не целесообразно для моего проекта, слишком трудоемко, для тестового проекта.

Похоже другого пути нет, значит пока протестируем сайт без https просто на http, если трафик будет тогда, тогда уже озадачусь разработкой компонента.

Похожие темы

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.