Использование Open Weather Map, которая является HTTP только через веб-сайт HTTPS и НЕ получает предупреждение о смешанном контенте

Я проверил эту ссылку здесь на SO: Работа с HTTP-контентом на страницах HTTPS

Я попробовал это в отношении открытых протоколов здесь: http://benpowell.org/https-and-http-the-protocol-less-or-protocol-relative-urls/

Но у меня есть только один вызов HTTP-URL для openweathermap, который не обслуживает его содержимое через HTTPS, если вы не платите им 500/ мес. Не могу этого сделать.

Итак, мне нужно найти способ ввести HTTP-контент для OpenWeatherMap, а не генерировать сообщение об ошибке "смешанный контент" в "любом" браузере.

Вот вызов API для OWM: http://api.openweathermap.org/data/2.5/weather?lat=32.22&lon=-100.50&APPID=c6fdcf2d49a0bba3e14f310bd3d5cdc2

Есть какие-нибудь мысли?

Заранее спасибо.

4 ответа

Наткнулся на эту тему, пытаясь разместить мое приложение на heroku при использовании Open Weather Map API.

Поместите это перед URL:

https://cors-anywhere.herokuapp.com/

так что URL становится

https://cors-anywhere.herokuapp.com/http://api.openweathermap.org/data/2.5/forecast? AppID =${api_key}

Проверьте ваше приложение еще раз и обратите внимание, что URL openweather снова является http (как это было изначально)! Это решение работало для меня, хотя решение CORS не может длиться вечно.

Хорошо, чтобы исправить эту ошибку, просто убедитесь, что все ваши внешние ресурсы используют HTTPS. Например, если у вас есть что-то вроде openweathermap.com в качестве ресурса, измените URL-адрес для загрузки с https вместо http. Если он останется http, он не будет загружаться должным образом, и вы увидите кучу ошибок JavaScript.

Кстати, у меня есть веб-сайт, полностью использующий HTTPS, но иногда он показывает внешний контент, например изображения из RSS-каналов, и они используют HTTP. Вот что я хотел бы сделать: во-первых, я хочу избавиться от надоедливого предупреждающего сообщения о небезопасном контенте. Вместо этого я хотел бы показать менее навязчивое предупреждение, возможно, заменив изображения значком по умолчанию. Во-вторых, что касается изображений, которые не загружаются, я хочу предложить пользователям что-нибудь полезное вместо них. Было бы здорово, если бы был какой-нибудь JS-код, который мог бы определять, какие изображения не загружаются, и заменять их нашими собственными изображениями.

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

Я был в состоянии заставить API загружаться на моем сайте, который обеспечивает https с небольшим количеством php.

По сути, я скручиваю http-сайт и сохраняю результаты на странице моего домена, которая называется https, так что она отлично работает для меня.

Я написал небольшую функцию, чтобы сделать работу за меня

 <?php
#Defining the basic cURL function
    function curl($url) {
    $ch = curl_init();  // Initialising cURL
#Setting cURL's URL option with the $url variable passed into the function
    curl_setopt($ch, CURLOPT_URL, $url);
#Setting cURL's option to return the webpage data   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
#Executing the cURL request and assigning the returned data to the $data variable
    $data = curl_exec($ch); 
#Closing cURL 
    curl_close($ch); 
#Returning the data from the function  
    return $data;  
 }
     echo $scraped_website = curl("http://www.example.com");

#I use http://api.openweathermap.org/data//2.5/weather?q=Saint+Louis%2C+MO&units=imperial&lang=nl&APPID=b923732c614593659457d8f33fb0d6fd&cnt=6 instead of "http://www.example.com"

?>

# Полный фрагмент

     <?php
     // Defining the basic cURL function
    function curl($url) {
    $ch = curl_init();  // Initialising cURL
    curl_setopt($ch, CURLOPT_URL, $url);    // Setting cURL's URL option with the $url variable passed into the function
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Setting cURL's option to return the webpage data
    $data = curl_exec($ch); // Executing the cURL request and assigning the returned data to the $data variable
    curl_close($ch);    // Closing cURL
    return $data;   // Returning the data from the function
      }
     echo $scraped_website = curl("http://www.example.com");
     ?>



enter code here

После того как прогноз. Изменится на Dark Sky, и они не позволяют CORS, что вынуждает вас внедрять приложение на стороне сервера, я искал другое решение, подходящее для небольшого внешнего проекта.

Я нашел apixu.com, который, кажется, намного лучше подходит для такой простой цели, как моя: проект FreeCodeCamp.

Они обеспечивают оба, http и https звонки. Вы получаете 5000 звонков в месяц бесплатно.

Другие вопросы по тегам