2016-06-14 10 views
0

Ich erhalte diese Störung, wenn ich versuche, $.get auf einer nicht sicheren Website zu nutzen (dh http, https nicht.):Wie verwendet man jQuery GET auf HTTP (nicht sicheren) Server?

jquery.min.js: 4 Mixed Inhalt: Die Seite auf‘. .. 'wurde über HTTPS geladen, aber ein unsiches Skript' http://api.openweathermap.org/data/2.5/weather?lat=50&lon=2?callback=jQuery ... 'angefordert. Diese Anfrage wurde blockiert. Der Inhalt muss über HTTPS bereitgestellt werden.

Ich habe versucht, zu diesem Problem Lösungen für die Arbeit zu denken. Das Problem ist ein festes Problem, da der Server von OpenWeather.org gehostet wird und es sich um eine nicht sichere Website handelt (dh http, nicht https).

Das ist mein Anforderungscode: $.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; });

Sie einfach die URL zu https://api.openweathermap.org Ändern ... funktioniert nicht, natürlich. Versuchte es und hat nicht funktioniert.

Die einzige Lösung, an die ich jetzt denken kann, ist, eine andere Wetter-API zu finden, die für mein Projekt frei ist, aber ich würde gerne wissen, ob es eine Möglichkeit gibt, OpenWeathermap-API zu verwenden, da es http ist. Neugierig, das zu wissen, weil es ziemlich verschwenderisch ist, bestimmte APIs nur deshalb ablehnen zu müssen, weil es http und nicht https ist.

+0

Können Sie Ihren Anfragecode anzeigen? – JohnnyAW

+0

BTW, Sie sagen, dass Sie die Anfrage über HTTP aufrufen, aber die Fehlermeldung deutlich sagt, dass die Anfrage über HTTPS gesendet wurde – JohnnyAW

+0

Ach ja, vergessen, meinen Anfragecode einzuschließen. Ich habe den ursprünglichen Post mit dem Code bearbeitet. @JohnnyAW yep, aber die Fehlermeldung bezieht sich auf JSFiddle, wo ich den Code getestet habe. Das HTTPS bezieht sich auf die JSFiddle-Website. – nickang

Antwort

0

so ist das Problem, dass Sie Ihren Code auf einer HTTPS-Site (JSFiddle und Coodepen) ausführen. Ihr Browser lässt aus Sicherheitsgründen keine HTTP-Verbindungen auf einer HTTPS-Site zu. Sie können dieses Problem lösen, indem Sie entweder HTTP auf der Seite erzwingen, auf der Sie Ihren Code ausführen (versuchen, einen Code aus einer lokalen Datei oder localhost auszuführen), oder Sie könnten eine HTTPS -> HTTP-Weiterleitung auf Ihrem Server erstellen, die eine HTTPS-Anfrage erhalten würde aus Ihrem Code und senden Sie eine HTTP-Anfrage an die API.

Ich würde vorschlagen, zuerst versuchen, von einem lokalen Host oder lokale Datei (nicht sicher, ob jeder Browser AJAX aus einer lokalen Datei zulassen, aber Sie können versuchen, vor dem Einrichten von localhost), das sollte für Sie arbeiten. Wenn Sie nur die API testen möchten, können Sie einfach die URL der GET-Anfrage in Ihre Browser-Registerkarte kopieren und ausführen.

+0

Danke für die Antwort. Sie meinen also, dass mein Code auf einem sicheren HTTPS-Server ausgeführt wurde, und dass mein Browser dies erkennt und keine Daten von einem nicht sicheren HTTP-Server entgegennimmt? Aha. Das macht Sinn. Zum Testen der URL habe ich das bereits erfolgreich gemacht. Die URL der HTTP-API funktioniert, wenn sie direkt in meinen Browser eingefügt wird. Ich bekomme wie erwartet ein JSON-Objekt mit den entsprechenden Daten zurück. – nickang

+0

Bedeutet das, dass, wenn mein Code auf einem HTTP-Server läuft und ein '$ .get' von einem HTTP-Server (via API-Aufruf) läuft, er dies ohne Probleme tun könnte? – nickang

+0

@nickang, ja, Sie können localhost über HTTP einrichten und führen Sie Ihren Code ohne Probleme – JohnnyAW

Verwandte Themen