2017-09-07 608 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