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

Is this a cross-domain or cross-protocol request?

我遇到了一个错误,我无法调试。 它发生在 Angular2 中的 http GET,看起来像这样:

constructor(private http: Http) {}

...

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

失败并出现如下所示的错误:

XMLHttpRequest cannot load http://someApi.abc.com/stuff?params' to 'http://elsewhere.abc.com/' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://local.abc.com' is therefore not allowed access.

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

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

same-origin 策略基于需要精确匹配的域。 local.abc.com 不完全匹配 someApi.abc.com。所以http://local.abc.comhttp://someApi.abc.com是两个完全不同的来源。因此,如果您的前端 JavaScript 代码在原点 http://local.abc.com 处为 运行,并且它向 http://someApi.abc.com 发出请求,那么这是一个 cross-origin 请求,因此 CORS参与其中;具体来说,如果 http://someApi.abc.com 站点未在其响应中发送 Access-Control-Allow-Origin 响应 header,浏览器将不允许您的前端 JavaScript 代码访问此类请求的响应。