2014-07-19 17 views
7

Tôi đã kiểm tra liên kết này ở đây trên SO: Dealing with HTTP content in HTTPS pagesSử dụng mở Weather Map đó là HTTP chỉ thông qua một trang web HTTPS và không nhận được nội dung hỗn hợp cảnh báo

Tôi cố gắng này liên quan đến các giao thức mở từ đây: http://benpowell.org/https-and-http-the-protocol-less-or-protocol-relative-urls/

Nhưng Tôi chỉ có một cuộc gọi đến một url HTTP cho openweathermap mà không phục vụ nội dung của nó thông qua HTTPS, trừ khi bạn trả tiền cho họ 500/mo. Không thể làm được.

Vì vậy, tôi cần tìm cách đưa nội dung HTTP cho OpenWeatherMap và không tạo thông báo lỗi "nội dung hỗn hợp" trên trình duyệt "bất kỳ" nào.

Đây là lệnh gọi API cho OWM: http://api.openweathermap.org/data/2.5/weather?lat=32.22&lon=-100.50&APPID=c6fdcf2d49a0bba3e14f310bd3d5cdc2

Mọi suy nghĩ, bất kỳ ai?

Xin cảm ơn trước.

+0

Openweathermap không cung cấp API mở miễn phí. Bạn nên tôn trọng điều đó và thanh toán hoặc tìm một API miễn phí khác sử dụng HTTPS. – David

Trả lời

0

Tôi đã có thể nhận được api để tải trên trang web của tôi thực thi https với một chút php.

Về cơ bản, tôi cuộn trang http và lưu trữ kết quả trên một trang trên tên miền của tôi là https để nó hoạt động hoàn hảo cho tôi.

Tôi đã viết một chức năng nhỏ để làm việc cho tôi

<?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" 

?> 

#Full đoạn mã

 <?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 
+0

bây giờ tôi thấy nơi curl là cần thiết.thanks for the info –

0

Kể từ forecast.io đổi thành Dark Sky và họ không cho phép CORS, do đó buộc bạn thực hiện một ứng dụng phía máy chủ, tôi đã tìm một giải pháp khác phù hợp cho một dự án front-end nhỏ.

Tôi đã tìm thấy apixu.com, dường như phù hợp hơn với một mục đích đơn giản như của tôi: Dự án FreeCodeCamp.

Họ cung cấp cả cuộc gọi, http và https. Bạn nhận được 5000 cuộc gọi mỗi tháng miễn phí.

1

Đã tình cờ gặp chủ đề này trong khi cố gắng để ứng dụng của tôi được lưu trữ trên heroku trong khi sử dụng API bản đồ thời tiết mở.

Đặt này ở phía trước của url:

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

để các url trở thành

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

Kiểm tra lại ứng dụng và lưu ý rằng url openweather là http một lần nữa (theo cách ban đầu)! Giải pháp này làm việc cho tôi, mặc dù giải pháp CORS có thể không tồn tại mãi mãi.

Các vấn đề liên quan