我正在运行使用angular-cli
生成的Angular 2应用程序。我正在使用下面的代码向服务器发出GET请求,该服务器允许跨源请求。
getItems(): Promise<Items[]> {
return this.http.get(this.url).toPromise().then(response => {
console.log(response);
response.json() as Item[];
}).catch(this.handleError);
}
当某个页面加载以检索项目列表时,将调用上述函数。当我在Chrome Incognito模式下测试应用程序时,会获取数据并记录收到的响应。但是当我在正常模式下尝试时,我会得到以下错误。
XMLHttpRequest cannot load http://10.20.10.16/api/items. Request header field x-xsrf-token is not allowed by Access-Control-Allow-Headers in preflight response.
我正在使用ng serve
来运行Angular 2应用程序。
我使用下面的jquery代码尝试了相同的GET请求,并且在Chrome正常模式下有效。
$(document).ready(function(){
$.ajax('http://10.20.10.16/api/items').done(function (data) {
console.log(data)
}).fail(function() {
console.log('Error');
}).always(function() {
console.log('Completed');
});
});
我认为这是一个缓存问题所以我清除了过去两天的缓存,这是我开始处理这个应用程序的时候。
我还在Internet Explorer中尝试过Angular 2应用程序,它没有任何COR错误。
这似乎是一个缓存问题,但我不想清除整个缓存。我该如何解决这个问题?
答案 0 :(得分:0)
我能够通过重新启动浏览器并恢复其历史记录来解决问题。我还预先删除了所有与localhost相关的内容。
我想通过清除浏览器历史记录可能会有效,但我并不想这样做。