我今天正在努力解决这个问题,因为我正在实现跨站点 API 调用。最糟糕的是它在我的本地环境中运行良好,但一旦在 heroku 上,它就会失败并出现以下错误:
XMLHttpRequest cannot load https://restcountries.eu/rest/v1/all. Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers in preflight response.
这是触发调用的函数:
let observable = this._http
.get(GEO_API_URL + query)
.map(response => response.json())
.do(val => {
this.cache = val;
observable = null;
})
.share();
return observable;
有什么想法吗?
谢谢。
最佳答案
有同样的问题。
就我而言,原因是在我的 Chrome cookie 中保存了 X-XSRF-TOKEN 字段。 Chrome 以某种方式向 OPTION 请求添加了 header “Access-Control-Request-Headers: x-xsrf-token”。在 Firefox 中,同一页面工作正常,在隐身模式 Chrome 中也是如此。
所以我只是删除了这个 cookie 字段 (X-XSRF-TOKEN),仅此而已。
关于heroku - Angular 2 : X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38589944/