2016-06-14 4 views
0

私は非セキュアサイト上$.get使用しようとすると、私は(つまり、HTTP、HTTPSません。)このエラーを取得しています:jQuery GETをHTTP(非安全)サーバーで使用するには?

jquery.min.js:4混在したコンテンツ:「でのページ。 .. 'はHTTPS経由で読み込まれましたが、安全でないスクリプト' http://api.openweathermap.org/data/2.5/weather?lat=50&lon=2?callback=jQuery ... 'を要求しました。このリクエストはブロックされました。 HTTPS経由でコンテンツを配信する必要があります。

私は、これに対する回避策を考えています。サーバはOpenWeather.orgによってホストされており、安全ではないサイト(httpsではなくhttp)であるため、この問題は修正されたものです。

これは私の要求コードです: $.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; });

は、単にhttps://api.openweathermap.orgに要求URLを変更...もちろん、動作しません。それを試して動作しませんでした。

今私が考えることのできる唯一の解決策は、自分のプロジェクトで自由に使用できる別の天気APIを見つけることですが、httpであればOpenWeathermapのAPIを使用する方法があるかどうかを知りたいと思います。 http:// httpsではなく、特定のAPIを却下しなければならないのはかなり無駄です。

+0

あなたはあなたの要求コードを表示することができますか? – JohnnyAW

+0

btw、あなたはHTTP経由でリクエストを呼び出すと言っていますが、リクエストがHTTPSを介して送信されたというエラーメッセージが明確に表示されています – JohnnyAW

+0

ああ、リクエストコードを忘れています。元の投稿をコードで編集しました。 @ JohnnyAWしかし、エラーメッセージはJSFiddleを参照していたところで、コードをテストしました。 HTTPSはJSFiddleのウェブサイトを指します。 – nickang

答えて

0

問題は、HTTPSサイト(JSFiddleとCoodepen)でコードを実行することです。ブラウザは、セキュリティ上の理由から、HTTPSサイト上でHTTP接続を許可しません。この問題は、コードを実行するページ(ローカルファイルまたはローカルホストからコードを実行しようとする)にHTTPを強制するか、サーバー上でHTTPS要求を受け取るHTTPS→HTTP転送を作成することで解決できますあなたのコードからHTTPリクエストをAPIに送信します。

まず、ローカルホストまたはローカルファイル(すべてのブラウザでローカルファイルからAJAXを許可するかどうかはわかりませんが、localhostを設定する前に試してみてください)が必要です。 APIをテストするだけなら、GETリクエストのURLをブラウザのタブに簡単にコピーして実行できます。

+0

答えをありがとう。つまり、自分のコードがHTTPSのセキュリティで保護されたサーバー上で実行されており、ブラウザがそれを認識し、非セキュアなHTTPサーバーからデータを取得することを拒否しているということです。そうですか。それは理にかなっている。 URLのテストに関しては、すでに成功しています。 HTTP APIのURLは、ブラウザに直接貼り付けると機能します。 JSONオブジェクトは、期待通りに関連するデータを返します。 – nickang

+0

これは、自分のコードがHTTPサーバー上で実行され、HTTPサーバーから(API呼び出しを介して) '$ .get'を実行すると、問題なく実行できるはずですか? – nickang

+0

@nickang、はい、HTTP経由でlocalhostを設定して問題なくコードを実行できます – JohnnyAW

1

SOと同じ「混合内容」の問題に関する別の記事を見つけました。この問題を解決するのに役立ち、他の多くのリソースを指しています。

質問者はopenweathermap API(HTTP経由で提供されているため)を削除し、代わりにforecast.ioのAPIを使用しました(まだ無料のままHTTPSで配信)。

Using Open Weather Map which is HTTP only through an HTTPS website and NOT get mixed content warning

関連する問題