nginx 中的 Angular2 - 缺少 CORS 标头“Access-Control-Allow-Origin”

Posted

技术标签:

【中文标题】nginx 中的 Angular2 - 缺少 CORS 标头“Access-Control-Allow-Origin”【英文标题】:Angular2 in nginx - CORS header 'Access-Control-Allow-Origin' missing 【发布时间】:2017-01-31 12:27:28 【问题描述】:

所以我从 Angular 2 中学习了英雄教程,将它与 angular-cli 项目一起使用。运行 ng serve 并在内存 api 中使用,它可以工作。

将服务器 url 更改为指向我的提供 rest api 的 tomcat 服务器。我用 curl 对此进行了测试,它会返回数据。

然后我将其构建用于生产,并将生成的包放入与 tomcat 相同的机器上的 nginx 中。

在 Firefox 中运行,得到正确的页面但没有数据。控制台显示 GET 正常。但我确实得到了

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://centos7:8080/heroes/heroes. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

*** 中关于这个主题的其他问题说两者必须在同一个域中,它们是,tomcat 服务器是 centos7:8080/heroes/heroes 和 nginx 服务器是 centos7/

我应该打开 CORS 吗?我看过http://enable-cors.org/server_nginx.html所以我需要在nginx.conf中添加这个?

有人有什么想法吗?

问候

【问题讨论】:

centos7/ 和 centos7:8080/ 不是同一个域。是的,港口很重要。 那么我需要设置CORS吗? 所以我将上面链接中的代码添加到 /etc/nginx/nginx.conf 的 location / 部分并重新加载了 nginx ,它没有任何区别。与之前的控制台输出完全相同。我做错了什么? 【参考方案1】:

所以我不是,如果这是绝对答案,但它删除了浏览器控制台中的 CORS 错误。

在我的 grails 3 rest api 应用程序中,我添加了 grails 3 COR 拦截器https://github.com/appcela/grails3-cors-interceptor。

我现在遇到了一个不同的问题,但我将在另一个问题中提出。

【讨论】:

以上是关于nginx 中的 Angular2 - 缺少 CORS 标头“Access-Control-Allow-Origin”的主要内容,如果未能解决你的问题,请参考以下文章

Angular2 rxjs 缺少 observable.interval 方法

在 Angular2 组件上使用 mixin 时缺少属性

Angular2中的GeoJson地图

模型绑定不适用于angular2中的选择[重复]

Angular2 + Nginx 深度链接/路由问题

Docker Nginx Angular2/Angular 路由