【问题标题】:Why does Angular2 require CORS when loading main.js from foreign server?为什么 Angular2 从外部服务器加载 main.js 时需要 CORS?
【发布时间】:2016-08-09 14:35:28
【问题描述】:

我收到此错误:

XMLHttpRequest cannot load http://otherwebsite.com/myapp/app/main.js.
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://otherwebsite.com' is therefore not allowed access.

在 Angular2 中引用 main.js 文件时:

System.import('http://otherwebsite.com/myapp/app/main')

但没有其他 .js 文件需要从其他站点提取 CORS。

我知道如何为方法添加CORS support for Web API 2,但这不是一种方法。我知道如何在 .htaccess 文件中添加CORS support for Apache folders。经过一番挖掘,我发现了如何添加 IIS 7 CORS folder support 以消除此错误。

当所有其他 .js 文件加载时没有 CORS 问题,为什么 Angular2 需要我的 main.js 的 CORS?

【问题讨论】:

  • 外部 js 文件是受限资源,需要 CORS 标头。这将适用于所有脚本,而不仅仅是角度。错误来自浏览器。我错过了什么吗?
  • 你能发布一个重现这个的 plunk 吗?
  • @drewmoore 我做了 Angular 2 Quickstart ,但从不同的 url 链接了所有 Javascript 代码。奇怪的是 Angular 2 从没有 CORS 的其他站点很好地加载,但是当它尝试加载我的代码 (main.js) 时,它因 CORS 错误而失败。
  • 等等,所以您的 main.js 来自一台服务器,而其他所有内容都来自另一台服务器?如果是这样,那么“奇怪”只是后者服务器包含适当的 CORS 标头,但前者(为您提供服务的服务器)没有
  • 打开 chrome 开发工具 -> 网络选项卡,展开来自每个服务器的请求之一,并比较其中的标头

标签: iis-7 angular cors


【解决方案1】:

如果脚本是从另一个域(甚至意味着不同的 IP 端口)加载的,而不是最初加载的 index.html,那么您请求文件的服务器需要提供 CORS 标头,否则浏览器不会允许获取它。

【讨论】:

  • 我只是觉得奇怪的是,当所有 JavaScript 都来自其他站点而没有 CORS 正常时,只有我的 javascripts 需要 CORS。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多