javascript - 这是跨域还是跨协议(protocol)请求?

标签 javascript angular rest cors same-origin-policy

我遇到了一个有点难以调试的错误。 这是从 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.

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

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

最佳答案

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

关于javascript - 这是跨域还是跨协议(protocol)请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44555227/

相关文章:

java - 如何更改 Spring Boot 错误响应中的状态代码?

java - Neo4j/CYPHER : How can I query some properties from a node, 它的关系和目标节点有效吗?

javascript - 如何通过key获取javascript对象的值

javascript - 在 ASP.NET 中使用 Underscore.js

javascript - 如何检查 .pipe(map) Rxjs 运算符中的空响应?

javascript - Angular 2 - TypeScript 文件未解析为 .js 扩展名 .NET MVC 应用程序

javascript - 我们可以在没有 Node 的情况下使用 Angular 吗?

c# - Web API Restful 服务 ReadAsAsync<type> 不返回列表

javascript - 使用 AngularJS 自旋转图像

javascript - 通过 AddThis 在 Facebook 上分享内容