为什么浏览器会阻止特定的Ajax请求?

时间:2015-09-21 09:38:14

标签: javascript ajax cross-domain same-origin-policy cross-domain-policy

我有两个代码段:

$.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发来的。为什么相同的原始政策不允许这两个请求? (实际上它是关于浏览器的问题)。

1 个答案:

答案 0 :(得分:1)

某些服务器允许浏览器执行跨源请求,有些则不允许。请参阅CORS

可能涉及多个CORS标头,因此要么没有任何一个存在,要么YouTube上缺少此特定操作所需的内容。但是,重点是服务器决定是否允许来自浏览器的跨源操作,因此您的两台服务器在这方面提供不同的功能。

这个特定的youtube API有点怀疑,因为它纯粹出于跨领域的原因而存在,所以必须有其他的东西阻止它工作。要了解更多信息,我们必须查看网络跟踪,以确切了解发送给youtube的内容,存在哪些CORS标头以及可能导致此问题的原因。例如,可能存在http / https不匹配,这就是CORS失败的原因吗?

相关问题