Xhtml中的跨域请求
Posted
技术标签:
【中文标题】Xhtml中的跨域请求【英文标题】:cross domain request in Xhtml 【发布时间】:2018-02-16 03:28:33 【问题描述】:我正在尝试从 HbbTV 应用程序 (xhtml) 发送 https 请求以从 https://www.meethue.com/api/nupnp 获取信息。
XMLHttpRequest 是我的第一个选择,但由于相同的来源政策,它显然行不通。作为替代方案,我找到了 CORS,但据我了解,它需要 XMLHttpRequest2,它是 HTML5 的一部分,对吗?
我可以使用任何功能、方法或解决方法来实现我的目标吗?
最好的问候 阿德里安
【问题讨论】:
XMLHttpRequest cannot load https://www.[website].com/的可能重复 请特别注意重复问题的已接受答案中标题为“CORS 的替代方案”的部分。 "它需要 XMLHttpRequest2,它是 HTML5 的一部分" — XMLHttpRequest 和 HTML 是独立的规范,它们之间没有依赖关系。 This HbbTV documentation 暗示它支持 CORS。您是否测试过它是否受支持? 【参考方案1】:XMLHttpRequest 是我的第一选择,但由于同源策略,它显然行不通。
我不明白。
从这里在 *** 上,我使用以下 sn-p 在您提供的端点上运行 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)
另外,如果您的平台支持它或者您可以对其进行 polyfill,我建议您使用 Fetch 而不是 XHR。
【讨论】:
天哪,非常感谢。我非常专注于文档和不同的解决方案,以至于我在某些时候将 GET 更改为 POST,浪费了很多时间。感谢您的所有帮助。以上是关于Xhtml中的跨域请求的主要内容,如果未能解决你的问题,请参考以下文章