【发布时间】:2016-06-14 10:45:00
【问题描述】:
当我尝试在非安全站点(即 http,而不是 https)上使用 $.get 时遇到此错误:
jquery.min.js:4 混合内容:“...”处的页面是通过 HTTPS 加载的,但请求了不安全的脚本“http://api.openweathermap.org/data/2.5/weather?lat=50&lon=2?callback=jQuery...”。此请求已被阻止;内容必须通过 HTTPS 提供。
我一直在想办法解决这个问题。这个问题是固定的,因为服务器由 OpenWeather.org 托管,并且它是一个不安全的站点(即 http,而不是 https)。
这是我的请求代码:
$.get("https://api.openweathermap.org/data/2.5/weather?lat=" + latitude + "&lon=" + longitude + "&APPID=123456", function(data) {
tempC = data.weather.main.temp / 10; // OpenWeather API returns Celsius * 10
rain = data.rain["3h"];
clouds = data.clouds.all;
});
当然,只需将请求 URL 更改为 https://api.openweathermap.org... 是行不通的。试过了,没用。
我现在能想到的唯一解决方案是找到另一个可免费用于我的项目的天气 API,但我想知道是否有办法仍然使用 OpenWeathermap 的 API,因为它是 http。很想知道这一点,因为仅仅因为它是 http 而不是 https 就不得不放弃某些 API 似乎很浪费。
【问题讨论】:
-
您能出示您的请求代码吗?
-
顺便说一句,您是说您通过 HTTP 调用请求,但错误消息清楚地表明该请求是通过 HTTPS 发送的
-
哦,是的,忘记包含我的请求代码。我已经用代码编辑了原始帖子。 @JohnnyAW 是的,但是错误消息是指我测试代码的 JSFiddle。 HTTPS 指的是 JSFiddle 网站。
-
但是您在代码中将请求发送到“HTTPS”??!!
-
等等,我想我明白你的问题了,你通过“https”提供你的网站,想向“http”-APi发送请求,浏览器响应“混合内容”,对吧?
标签: javascript http get