2017-09-07 411 views
0

我试图从HbbTV应用程序(xhtml)发送https请求以从https://www.meethue.com/api/nupnp获取信息。Xhtml中的跨域请求

XMLHttpRequest是我的第一选择,但由于相同的原产地政策,它显然不会工作。作为替代方案,我发现了CORS,但据我了解,它需要XMLHttpRequest2,它是HTML5的一部分,我正确吗?

是否有任何函数,方法或解决方法可以用来实现我的目标?

问候 阿德里安

+0

[XMLHttpRequest可能重复无法加载https:// www。\ [website \] .com /](https://stackoverflow.com/questions/35553500/xmlhttprequest-cannot-load-https-www-website- com) – Quentin

+0

请注意,重复问题的接受答案中标题为“CORS的替代方案”部分。 – Quentin

+1

“它需要XMLHttpRequest2,它是HTML5的一部分” - XMLHttpRequest和HTML是独立的规范,它们之间没有依赖关系。 – Quentin

回答

2

XMLHttpRequest的是我的第一选择,但由于同源策略,这显然是行不通的。

我不明白。

从这里StackOverflow上我没有问题上运行你所提供的端点的XHR,使用下面的代码片段:

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(跨域资源共享),更多的是规范而不是技术本身。

它定义只有当目标端点指定允许源访问时,才允许跨源请求。 如果您想了解更多的话,我建议在此MDN优秀的文章:HTTP Access Control (CORS)

另外,如果你的平台支持它,或者你可以填充工具的话,我建议你使用取代替XHR。

+0

哦,男人,非常感谢你。我非常专注于文档和不同的解决方案,我在某种程度上将GET变成了POST,浪费了很多时间。感谢您所有的帮助。 – DaPole