2017-09-07 7 views
0

Ich versuche eine HTTPS-Anfrage von einer HbbTV-Anwendung (XHTML) zu senden, um Informationen von https://www.meethue.com/api/nupnp zu erhalten.Cross-Domain-Anfrage in XHTML

XMLHttpRequest war meine erste Option, aber aufgrund der gleichen Herkunft Politik wird es offensichtlich nicht funktionieren. Als Alternative habe ich CORS gefunden, aber wie ich es verstehe, benötigt es XMLHttpRequest2, das Teil von HTML5 ist, bin ich richtig?

Gibt es irgendeine Funktion, Methode oder Workaround, die ich verwenden könnte, um mein Ziel zu erreichen?

Mit freundlichen Grüßen Adrian

+0

Mögliches Duplikat von [XMLHttpRequest kann nicht laden https: // www. \ [Website \] .com /] (https://stackoverflow.com/questions/35553500/xmlhttprequest-cannot-load-https-www-website- com) – Quentin

+0

Beachten Sie insbesondere den Abschnitt "Alternativen zu CORS" in der angenommenen Antwort auf die doppelte Frage. – Quentin

+1

"es benötigt XMLHttpRequest2, das Teil von HTML5 ist" - XMLHttpRequest und HTML sind unabhängige Spezifikationen ohne Abhängigkeiten zwischen ihnen. – Quentin

Antwort

2

XMLHttpRequest war meine erste Wahl, aber wegen gleicher Herkunft Politik wird es offensichtlich nicht.

Ich verstehe es nicht.

Von hier auf Stackoverflow habe ich keine Probleme einen XHR auf dem Endpunkt ausgeführt wird Ihnen zur Verfügung gestellt, mit dem folgenden Code-Schnipsel: mehr ein

function fetchData() { 
 
    var URL = 'https://www.meethue.com/api/nupnp'; 
 
    var xhr = new XMLHttpRequest(); 
 

 
    xhr.onreadystatechange = function() { 
 
     if (xhr.readyState == XMLHttpRequest.DONE) { 
 
     document.getElementById('response') 
 
      .innerHTML = "Response: " + xhr.responseText 
 
     } 
 
    } 
 
    xhr.open('GET', URL) 
 
    xhr.send() 
 
}
<div id='response' onclick='fetchData()'>Click to fetch</div>

CORS (Cross-Origin Resource Sharing) ist Spezifikation als eine Technologie an sich.

Es legt fest, dass die stammursprungsübergreifende Anforderung nur dann zulässig sein soll, wenn der Zielendpunkt angibt, dass der Ursprung dort abrufen darf. Wenn Sie mehr darüber erfahren, empfehle ich diesen ausgezeichneten Artikel über MDN: HTTP Access Control (CORS)

Auch wenn Ihre Plattform es unterstützt oder Sie können es POLYfill, empfehle ich Ihnen statt XHR Fetch verwenden.

+0

oh man, vielen Dank. Ich war so konzentriert auf Dokumentationen und verschiedene Lösungen, dass ich das GET irgendwann in einen POST verwandelte, so viel Zeit verschwendet. Danke für Ihre Hilfe. – DaPole