这是跨域还是跨协议请求?

时间:2017-06-14 21:45:05

标签: angular rest cors cross-domain same-origin-policy

我有一个错误,我的头脑有点调试。 它发生在Angular2中的http GET中,如下所示:

constructor(private http: Http) {}

...

this.http.get('someApi.abc.com/stuff?params`)

失败并显示如下错误:

  

XMLHttpRequest无法加载http://someApi.abc.com/stuff?params'至   ' http://elsewhere.abc.com/'被CORS政策阻止:没有   '访问控制允许来源'标题出现在请求的上   资源。起源' http://local.abc.com'因此是不允许的   访问。

我认为有两个问题:我不理解的重定向(可能需要联系someApi所有者?)和CORS问题。

我的理解是该域名是:abc.com 协议是:http 所以不应该涉及CORS废话。我显然错了,但不明白为什么:(

1 个答案:

答案 0 :(得分:1)

同源策略基于需要完全匹配的域。 local.abc.comsomeApi.abc.com不完全匹配。因此http://local.abc.comhttp://someApi.abc.com是两个完全不同的起源。因此,如果您的前端JavaScript代码在源http://local.abc.com运行并向http://someApi.abc.com发出请求,那么这是一个跨源请求,因此CORS会参与其中;具体而言,如果http://someApi.abc.com网站未在其回复中发送Access-Control-Allow-Origin响应标头,则浏览器不允许您的前端JavaScript代码访问此类请求的响应。