XMLHttpRequest mit SSL-Verschlüsselung

  • Hallo ,

    Ich würde gerne eine .json-Datei (https://public-api.adsbexchang…8.008113&fDstL=0&fDstU=30) aus dem Internet in einer Variable in Javascript einfügen. Allerdings funktioniert das bei mir mit der eben genannten URL nicht. Wenn ich stattdessen die Datei auf meinem lokalen PC speichere und über file:///C:/Documents/AircraftList.json aufrufe oder andere Json-Dateien mit http:// oder (https://maps.googleapis.com/ma…de/json?address=Frankfurt) aus dem Internet aufrufe funktioniert es dagegen schon.


    Um die Datei zu bekommen verwende ich folgenden Javascript-Code:

    Dieses Beispiel funktioniert so. Wenn ich jetzt aber die URL ändere um die AircraftList.json zu erhalten kommt nichts an. Ich muss die Daten aber regelmäßig aktualisieren, weshalb ich nicht die lokale Kopie der Datei auf meinem Computer verwenden kann.


    Kann mir jemand sagen, woran es liegt dass diese eine Seite über Javascript nicht gelesen werden kann. Hat das evtl. etwas mit dem https:// und einer SSL-Verschlüsselung zu tun?


    Ich würde mich sehr freuen wenn jemand eine Idee hat, um das Problem zu lösen.

    VG 123abc

  • Es gibt eine SOP ( SameOriginPolicy ), die definiert, dass Anfragen nur von der eigenen Domain erlaubt sind.

    Manche Seiten lassen XmlHttpRequests durch, einige sperren das. Ist ein Sicherheitsprinzip, das Du kaum umgehen kannst.

    Evtl. hilft Dir CORS etwas, kannst Du ja mal durchlesen.

  • Du könntest da aber was mit Php machen.

    Oder wenn es nur für dich zuhause ist kannst du die CORS mit Greasmonkey/Tampermonkey umgehen.Damit hole ich auch mehrere Forums auf einer Seite.

  • Wie ungefähr würde man das machen, wenn man nur auf dem eigenen Pc die Cors mit Greasmonkey umgehen möchte? Leider habe ich davon überhaupt keine Ahnung.

  • Kennst du dich mit Javascript den aus ? Greasemonkey ist zu 95 prozent das gleiche .Die haben zwar noch andere Befehle wie den GM_ Kram ,und auch die meta Daten sind anders ,aber sonst ist da nicht viel anders.

    Das schöne da dran ist das du die einkommene Daten Manipulieren kannst für deine Zwecke.Wie gesagt habe auf einer Seite mehrere Forume eingebunden. Das wäre mit Javascript eigentlich nicht möglich ,auser bei welchen Seiten die das erlauben ,sehe #post 3 von Arne Drews . Greasemonkey umgeht das irgendwie ,aber wie weiß ich nicht ,aber es geht aufjedenfall. Das geht aber auch nur mit GET Requeste und mit POST nur auf den Seiten wo du hin senden willst.

    Hoffe ich habe das jetzt richtig erklärt.

    Hast du den Firefox oder Opera Browser? Ist da schon Tampermonkey oder greasemonkey drauf ?


    Ich probiere das gleich aus mit Greasmonkey und wenn alles geklappt habt reden wir weiter da drüber.

    Hast du möglichkeiten mit Php zu arbeiten ?

    Mit Php sollte das eigentlich auch gehen mit file() oder so.Das können die Php Leute dir dann besser erklären.

  • So habe es getestet und es geht.

    Deswegen hier ein Mini Tutorial für dich.

    1. Greasemonkey oder Tampermonkey Installieren ( Firefox oder Opera -Browser).

    2. In den Einstellungen auf NEU bzw NEUE DATEI gehen und untern Code rein kopieren.

    2a Include Angaben ändern ,auf der Seite wo das Script laufen soll.

    3. Speichern und fertig.

    4 Fals Einstellungen nicht gefunden werden ,oder sonst was dann kann man auch ein neues Textdokument öffnen,den Code reinkopieren und beim Speichern drauf achten das der name mit .user endet.

    5. Ist das Script gespeichert ziehen wir es mit drop & drag ins Browser Fenster rein.

    Script sollte jetzt Einsatzbereit sein. Da ich auf Include nur ein Stern rein gemacht habe läuft das Script auf allen Seiten und legt so alles larm. Deswegen Punkt 2a beachten.

    Nehmen wir mal an du schreibst da *google.de* rein dann läuft das Script überall wo google.de in der Adressleiste steht.

    In diesen Script wird nur eine Grüne Seite erstellt wo die Daten deines Linkes drinnen steht. Die weitere Bearbeitung der Daten kannst du jetzt ganz normal weiter führen wie du es von Javascript ,Html,Css gewohnt bist.

    6. Bei weitern Fragen und Probleme einfach melden


  • Würde man versuchen sich in CORS einzulesen und es zu verstehen, anstatt irgendwelche Plugins/Erweiterungen zu installieren, würde man vermutlich erahnen, was die Funktion GM_xmlhttpRequest() im Background macht und könnte das vielleicht mit wenigen Zeilen JS selber machen.


    Aber ThirdParty-Gedöns zu verwenden, um den Kern nicht verstehen zu müssen, scheint Mode zu sein.

  • Ich persönlich habe mich mit CORS nie intensiv befasst, daher der Link in #3, schließlich soll der TE auch selber lernen und nicht immer fertige Scripte bekommen, die er am Ende sowieso nur bedingt einsetzen kann.


    Aber um Deinen Wissensdurst zu stillen: Ich würde da einfach einen cURL-Request per PHP zwischensetzen und feddich!

    Code
    $c = curl_init();
    curl_setopt_array( $c, [
            CURLOPT_URL => $url,
            CURLOPT_HEADER => false,
            CURLOPT_FORBID_REUSE => true,
            CURLOPT_RETURNTRANSFER => true
        ]);
    
    echo curl_exec( $c );

    Die JS sieht dann ganz simpel bspw. so aus:

    Code
    var o = new XMLHttpRequest();
    o.addEventListener( 'load', function() {
            document.querySelector( 'code' ).innerText = this.responseText;
        });
    
    o.open( 'GET', 'curl.php', true );
    o.send();

    simple way to go, let me show you: http://examples.php-rocks.de/curl/

  • Mit Php ist ja schön und gut.Es soll aber auch ohne gehen und das wäre interesant das mal hinzubekommen.Die ganzen Scripte die man im Netzt bisher gefunden hat haben bei den neuen Browser alle nicht mehr Funktioniert.


    Wenn der TE kein Php zu verfügung hat kommt er mit deiner Variante ja auch nicht weiter.

    Fals doch ,ist es natürlich besser als sich Greasemonkey zu installieren.

    Fals man GM sowieso schon nutzt muß man selbst wissen was man macht.


    Deine Variante müßte dann bei iframes von fremden Seiten einbinden ja auch gehen oder?

  • XAMPP kennst Du, das weiß ich aus anderen Beiträgen, womit das fehlende PHP Problem gelöst ist.

    Das müsste man zwar auch zusätzlich installieren, aber das sollte Grundlage sein, wenn man lokale Webanwendungen verwendet, die zudem auch noch auf das Internet zugreifen!


    Also hat der TE aus meiner Sicht PHP immer zur Verfügung, es sei denn er will nicht. Aber dann ist weitere Hilfe für dieses Szenario m.M.n. verschwendete Zeit.

    Wenn man etwas aufbauen will und in einem Forum fragt, sollte man es auch schon richtig machen wollen.


    iframes würde natürlich gehen, halte ich aber für Unfug.

  • Wenn der TE XAMPP nutzt dann sollte er natürlich deine Variante nutzen.Da gebe ich dir recht.

    Jetzt kommt es nur drauf an was der TE dazu sagt ,was er nutzt und was er sich so ausgedacht hat.

  • Vielen Dank für die Tipps und Ratschläge. Mit Tampermonkey in Chrome habe ich es jetzt hinbekommen. Wenn man es einmal verstanden hat geht das ganz gut. Hätte ich sonst bestimmt nicht hinbekommen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!