2017-09-07 4 views
0

J'essaie d'envoyer une demande https à partir d'une application HbbTV (xhtml) pour obtenir des informations de https://www.meethue.com/api/nupnp. XMLHttpRequest était ma première option, mais en raison de la même politique d'origine, cela ne fonctionnera évidemment pas. Comme alternative, j'ai trouvé CORS, mais si je comprends bien, il a besoin de XMLHttpRequest2, qui fait partie de HTML5, ai-je raison?demande de domaine croisé en Xhtml

Y at-il une fonction, méthode ou solution de contournement que je pourrais utiliser pour atteindre mon objectif?

Meilleures salutations Adrian

+0

Un doublon possible de [XMLHttpRequest ne peut pas charger https: // www. \ [Website \] .com /] (https://stackoverflow.com/questions/35553500/xmlhttprequest-cannot-load-https-www-website- com) – Quentin

+0

Veuillez noter, en particulier, la section intitulée «Alternatives à CORS» dans la réponse acceptée sur la question en double. – Quentin

+1

"il a besoin de XMLHttpRequest2, qui fait partie de HTML5" - XMLHttpRequest et HTML sont des spécifications indépendantes sans aucune dépendance entre elles. – Quentin

Répondre

2

XMLHttpRequest était ma première option, mais en raison de la politique même de l'origine de toute évidence, il ne fonctionnera pas.

Je ne comprends pas.

A partir de là Stackoverflow Je n'ai pas du mal à courir un XHR sur le point de terminaison que vous avez fourni, en utilisant l'extrait suivant:

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 (partage des ressources croisées d'origine) est plus une spécification qu'une technologie en soi.

Il définit que la demande d'origine croisée ne doit être autorisée que si le point de terminaison de destination spécifie que l'origine est autorisée à y être récupérée. Si vous souhaitez en savoir plus à ce sujet, je recommande cet excellent article sur le MDN: HTTP Access Control (CORS)

De plus, si votre plate-forme prend en charge ou vous pouvez Polyfill, je vous recommande d'utiliser Fetch au lieu de XHR.

+0

oh mec, merci beaucoup. J'étais tellement concentré sur les documentations et les différentes solutions, que j'ai changé le GET dans un POST à ​​un moment donné, tellement de temps perdu. Merci pour toute votre aide. – DaPole