【发布时间】:2016-11-30 02:32:02
【问题描述】:
我今天正在努力解决这个问题,因为我正在实施跨站点 API 调用。最糟糕的是它在我的本地环境中运行良好,但是一旦在 heroku 上,它就会失败并出现以下错误:
XMLHttpRequest 无法加载 https://restcountries.eu/rest/v1/all。预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 X-XSRF-TOKEN。
这里是触发调用的函数:
let observable = this._http
.get(GEO_API_URL + query)
.map(response => response.json())
.do(val => {
this.cache = val;
observable = null;
})
.share();
return observable;
有什么想法吗?
谢谢。
【问题讨论】:
-
那个不需要服务器配置,与Angular2无关。另请参阅stackoverflow.com/questions/10143093/…
-
感谢君特的回答。我知道这不是 Angular 但应该有某种解决方法?但是当我尝试替换 Access-Control-Request-Headers 时,它显示“拒绝设置不安全的标头”。
-
我不知道你在哪里替换标题,我不知道你的意思是什么解决方法。 Angular 不参与其中,预检请求是由您的浏览器而不是 Angular 创建的。只有在对预检请求的响应包含正确的标头之后,浏览器才会执行由 Angular 发起的实际请求。
-
感谢您的跟进。我没有说它是有角度的,我在标题中提到了有角度的,因为这是我在这里使用的技术。它可以在本地工作,但是一旦在 heroku 上它就会失败......就是这样。
-
如果您访问不同的 URL(即使只有端口不同),浏览器需要 CORS 标头。您必须查看如何在 Heroku 上配置它们。
标签: heroku angular xmlhttprequest cors