【问题标题】:REST request not allowed不允许 REST 请求
【发布时间】:2013-11-22 06:28:30
【问题描述】:

我目前正在开发一个带有节点 REST 服务的 AngularJS 客户端。当我尝试在本地使用 REST 服务时出现此错误:

 XMLHttpRequest cannot load http://tasks.dev:12345/articles. Origin http://tasks.dev:8080 is    not allowed by Access-Control-Allow-Origin. 

我已经尝试在我的 hosts 文件中将 localhost 设置为 tasks.dev 并在一个简单的网络服务器中运行应用 Angular 应用。我还能做什么?

【问题讨论】:

  • 既然你添加了cors标签,你设置了CORS了吗?
  • @Prinzhorn 这就是重点:在这种情况下我该如何设置?在另一种情况下,您将使用 JSONP 或类似的东西,但现在我使用具有不同端口的同一主机(localhost 或 tasks.dev)并且它不起作用。这是为什么呢?
  • @schlingel 因为您的浏览器使用三元组 {protocol, host, port} 作为来源。如果其中一项更改,您需要启用 CORS 支持。如果你碰巧使用 Express,see this page.
  • @robertklep 谢谢!我完全忘记在节点站点添加 CORS 标头...你是对的!

标签: node.js angularjs cors


【解决方案1】:

我读到主机文件不接受带有端口的 url。如果是这样,例如定义 http://tasks.dev,默认情况下(或 8080)侦听 8000

除了在您的app.js 中设置您的服务器以收听8000(或 8080)。

希望这会有所帮助,

R.

【讨论】:

  • 这点我不明白。我在我的主机文件中添加了 tasks.dev 作为 127.0.0.1 。为什么应用程序不仅要分离主机,还要分离端口?
  • 您的服务器可能打开了一个不是8000或8080的端口。如果您使用localhost打开应用程序,使用的是哪个端口?
  • robertklep 清除了迷雾。浏览器使用三元组而不是仅域。此外,我忘记将 CORS 标头添加到我的 REST 服务中。但要回答您的问题:我的服务在端口 12345 和网站在 8080 运行(用于测试)。
猜你喜欢
  • 2017-03-15
  • 2021-05-03
  • 2015-03-09
  • 2018-12-22
  • 2023-03-10
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多