2016-08-04 31 views
0

abrufen Ich habe eine Website unter https:// gehostet, in dem ich Daten von der Website ziehen möchten, die die Eigenschaften der Freigaben zeigt. Die URL, die die Daten zurückgibt, ist:Nicht möglich, Daten von HTTP-Site zu https mit XMLHttpRequest()

http://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191

Der Code, die ich entwickelt habe, um die Daten zu erhalten, wie folgt:

function GetSharesUpdate(){ 
    // makeing AJAX calls to the web service for getting the share update  
    var xhr = new XMLHttpRequest(); // Set up xhr request 
    xhr.open("GET", "http://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191", true); // Open the request 
    xhr.responseType = ""; // Set the type of response expected  
    xhr.send(); 
    // Asynchronously wait for the data to return 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == xhr.DONE) { 
      var tempoutput = xhr.responseXML; 
      alert(tempoutput); 
     } 
    } 
    // Report errors if they happen 
    xhr.addEventListener("error", function (e) { 
     console.error("Error: " + e + " Could not load url."); 
    }, false);  
} 

Ich erhalte den Fehler auf der Anweisung xhr.send();, die als unten:

Mixed Inhalt: Die Seite auf 'https://[SiteUrl]' wurde über HTTPS geladen, aber eine insecu angefordert re XMLHttpRequest Endpunkt 'http://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191'. Diese Anfrage wurde blockiert; Der Inhalt muss über HTTPS bereitgestellt werden.

Wenn ich die URL zu https ändern heißt

https://ir1.euroinvestor.com/asp/ir/xmlirmultiiso2.aspx?companyid=281191

dann xhr.send(); ohne Fehler ausgeführt wird, aber ich bin immer xhr.responseXML null.

Was muss ich in meinem Code ändern, damit er funktioniert?

+0

Es gibt vier Schrägstriche ('/') in der zweiten URL. Ist das korrekt? – FrankerZ

+0

Danke für die Aufmerksamkeit. Es war ein Tippfehler beim Hinzufügen des Posts. –

+0

Es wird ohne Fehler ausgeführt? Es ist nicht, wenn ich es betreibe: * VM155 nizaqapusu.js: 6 GET https://ir1.euroinvestor.com/asp/ir/xmlirmultiso2.aspx?companyid=281191 net :: ERR_INSECURE_RESPONSE * und wenn ich die URL Chrome besuche beschwert sich, dass das SSL-Zertifikat für einen anderen Hostnamen ist. – Quentin

Antwort

0

Das erste Problem ist, dass Sie Ajax-Anfrage an Nicht-HTTPS-Domain, aber Ihre Domain hat SSL installiert.

Das zweite Problem ist Cross-Ursprungs-Anfrage CORS, Sie werden dieses Problem haben, auch Sie zuerst lösen (dh auch Sie versuchen Ajax-Anfrage von Nicht-HTTP-Domäne).

Da Sie Daten von einer anderen Website anfordern, wird dies höchstwahrscheinlich passieren, es sei denn, der angeforderte Server ist so konfiguriert, Anforderungen für Ihre Domäne zu bedienen. Um dies zu lösen, müssen Sie die Daten von Ihrem Server (Proxy-Server) aufrufen Der angeforderte Server wurde so konfiguriert, dass er Anforderungen von Ihrer Domain zulässt.

Mehr sehen - https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS