【问题标题】:CORS with Aurelia-CLI server带有 Aurelia-CLI 服务器的 CORS
【发布时间】:2017-02-10 15:44:42
【问题描述】:

更新的解决方案和问题历史

我的设置是这样的:

我让 CORS 理解了错误的方式,认为 HTTP 服务器应该为标头提供服务。事实上,需要提供 CORS 标头的是第 3 方 API。

由于第 3 方不发送 CORS 标头,并且 fetch client 期望那些(绕过浏览器的同源策略)出现如下错误消息:

Fetch API 无法加载 http://api.sl.se/api2/realtimedeparturesV4.json?key=b99d17e1714142ca90ed017aeead32fc&siteid=9001。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'http://localhost:9000'。

现在,可以使用{mode: 'no-cors'} 在获取客户端中打开 CORS,但这会禁止 JavaScript(除非响应是纯文本)。

我选择的解决方案是在服务器端实现一个代理(为简单起见:与提供 Aurelia 页面的域相同),然后调用第 3 方。服务器端没有 CORS 限制。

更好的解决方案是第 3 方支持 CORS,但有时这不是一个选项(即第 3 方)。

【问题讨论】:

  • 不。它是需要发送 CORS 标头的 API。
  • 如果您发布有关 API 设置的更多详细信息,也许我们可以提供帮助。但这绝对与 Aurelia-CLI 无关。
  • 更多详情现已发布

标签: aurelia


【解决方案1】:

Aurelia Fetch 客户端的默认设置是 CORS,因此您的 Aurelia 应用应该能够从 3rd 方服务器获取。 您的 API 端点,而不是您的 Aurelia Cli 服务器,可能没有在 CORS 工作所需的预检请求中将正确的标头发送回浏览器(您的 Aurelia 应用程序)。当然,哪些标头取决于您尝试从端点发送和接收的内容。

【讨论】:

  • 我已经添加了代码,包括 API 端点(开放端点)的 URL。我对 CORS 的理解是,它是服务于初始 Aurelia 应用程序的服务器,用于发送标头(允许浏览器联系谁),但我开始认为这是错误的。
猜你喜欢
  • 1970-01-01
  • 2017-07-07
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2021-08-05
相关资源
最近更新 更多