我有两个代码段:
$.getJSON("https://noembed.com/embed", {"format": "json", "url": input.val()}, function (data) {
// work with data
});
第二个:
$.getJSON("https://www.youtube.com/oembed", {"format": "json", "url": input.val()}, function (data) {
// work with data
});
第一个会成功,但第二个不会。他们都是从http://localhost:8080/myapp/page
发来的。为什么相同的原始政策不允许这两个请求? (实际上它是关于浏览器的问题)。
答案 0 :(得分:1)
某些服务器允许浏览器执行跨源请求,有些则不允许。请参阅CORS。
可能涉及多个CORS标头,因此要么没有任何一个存在,要么YouTube上缺少此特定操作所需的内容。但是,重点是服务器决定是否允许来自浏览器的跨源操作,因此您的两台服务器在这方面提供不同的功能。
这个特定的youtube API有点怀疑,因为它纯粹出于跨领域的原因而存在,所以必须有其他的东西阻止它工作。要了解更多信息,我们必须查看网络跟踪,以确切了解发送给youtube的内容,存在哪些CORS标头以及可能导致此问题的原因。例如,可能存在http / https不匹配,这就是CORS失败的原因吗?