【发布时间】:2017-01-25 21:43:02
【问题描述】:
编辑:可能值得注意的是,我是在 GoDaddy 注册的域,它通过掩码转发到我的 Bitnami IP。我的堆栈都在同一台服务器上,这就是为什么我不明白这个问题的跨站点性质。或者,也许我理解错了。请帮助我理解这个错误。
我知道还有其他类似的线程,但我没有看到任何与我的确切设置匹配的线程。
我有一个运行 AngularJS 站点的 Amazon AWS EC2 Bitnami MEAN 堆栈。我正在将一些我用一些 Python 脚本从外部收集的信息发布到 mongodb 中,然后我有一个 JS API,它通过端口 3000 成功发布了集合……据我所知,所有这些都是非常标准的。我刚刚学习这项技术,还很新手。
所以当我在 Chrome 中访问 API [URL]:3000/api 时,我会看到 JSON 结果。这不是问题。
当我的 Angular 站点的控制器尝试对 API URL 执行 $http GET 时,Express 会在我的 putty 控制台中记录并显示我确实在访问 API。
但是.. 当我 F12 调试时,Chrome 在页面上给了我这个甜蜜的错误:
XMLHttpRequest cannot load **URL**. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin **URL**' is therefore not allowed access.
抱歉所有虚假网址,我是 stackoverflow 的新手,它标记我使用“超过 2 个网址”,因为我没有 10 分。
非常感谢您帮助我理解这个问题。
【问题讨论】:
-
不能像那样跨域重定向 ajax 请求...让您的主机服务器充当代理并获取数据。另请注意,就 CORS 而言,不同的端口构成不同的来源
-
@charlietfl 我也在其他地方看到了这个解决方案。再次原谅我的新手。您能否将类似 ELI5 的内容与如何完成该代理或反向代理设置相关联?目前,这正在使用以下解决方案,允许所有 CORS。我只有 GET,它是一个公共免费网站,所以确实没有安全问题,但我想正确地做。 =o)
标签: angularjs api cors jsonp mean-stack