为什么某些跨域XMLHttpRequest请求不返回CORS错误

时间:2017-03-16 23:22:02

标签: javascript ajax xmlhttprequest cors

对于某些API,数据很容易访问,并且不会引发以下CORS错误。

XMLHttpRequest无法加载http://external.service/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://my.app”访问。

我很困惑为什么它不会抛出错误。

在Node.js中,当我想在我的服务器上启用CORS时,我必须这样做:

res.header("Access-Control-Allow-Origin", "*");

res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

我认为以类似的方式设置了以下API,但我正在寻找验证这是真的。我希望我的理解在技术上是准确的。

如果有其他解释,我想知道。

不抛出CORS错误的API的一些示例是:

https://itunes.apple.com/hk/rss/topalbums/limit=10/json

http://www.omdbapi.com/?s=Star%20Wars&r=json

https://api.github.com/users/名用户的-

1 个答案:

答案 0 :(得分:0)

是的,您的理解在技术上是准确的。您可以看到您提到的API示例(或其他任何支持CORS)的响应中的标题,并且它们都包含了标题,就像您所做的那样在你的Node.js应用程序中。

现在他们可能没有在Node.js中这样做,但是为响应添加标题是所有可能的Web框架的基本内容,或者只是在Web服务器本身设置一些配置。

这是一个Postman屏幕截图,显示了github api响应中的标题。

Headers from Github API