我有一个错误,我的头脑有点调试。 它发生在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废话。我显然错了,但不明白为什么:(
答案 0 :(得分:1)
同源策略基于需要完全匹配的域。 local.abc.com
与someApi.abc.com
不完全匹配。因此http://local.abc.com
和http://someApi.abc.com
是两个完全不同的起源。因此,如果您的前端JavaScript代码在源http://local.abc.com
运行并向http://someApi.abc.com
发出请求,那么这是一个跨源请求,因此CORS会参与其中;具体而言,如果http://someApi.abc.com
网站未在其回复中发送Access-Control-Allow-Origin
响应标头,则浏览器不允许您的前端JavaScript代码访问此类请求的响应。