当我尝试$.get
在非安全站点(即http,而非https)上使用时,出现此错误:
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似乎很浪费。
因此,问题是,您在HTTPS站点(JSFiddle和Coodepen)上运行代码。您的浏览器不允许出于安全原因使用HTTPS站点上的HTTP连接。您可以通过在运行代码的页面上强制使用HTTP(尝试从本地文件或本地主机运行代码)来解决该问题,也可以在服务器上创建HTTPS-> HTTP转发,从而接收HTTPS请求从您的代码中发送HTTP请求到API。
我建议先尝试从本地主机或本地文件运行(不确定每个浏览器是否允许本地文件中的AJAX,但是您可以在设置本地主机之前尝试),这应该适合您。如果只想测试API,则可以简单地将GET请求的URL复制到浏览器选项卡中并执行它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句