angular-cli
を使用して生成されたAngular 2アプリケーションを実行しています。私は以下のコードを使用して、クロスオリジン要求を可能にするサーバーにGETリクエストを行います。CORはChrome標準モードでAngular 2を発行します
getItems(): Promise<Items[]> {
return this.http.get(this.url).toPromise().then(response => {
console.log(response);
response.json() as Item[];
}).catch(this.handleError);
}
上記の関数は、アイテムのリストを取得するために特定のページが読み込まれると呼び出されます。 Chromeのシークレットモードでアプリケーションをテストすると、データが取得され、受信したレスポンスが記録されます。しかし、通常のモードで試してみると、以下のようなエラーが出ます。
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.
私はを使って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');
});
});
私はそれがキャッシュの問題だと思ったので、このアプリケーションで作業を開始した最後の2日間キャッシュをクリアしました。
また、Internet ExplorerでAngular 2アプリケーションを試しましたが、CORエラーがなくても正常に動作します。
キャッシュの問題のようですが、キャッシュ全体をクリアしたくありません。これをどうすれば解決できますか?
あなたができることは、クロムプロセスを殺すことです。 ctrl + F5を押してハードリフレッシュを実行します。クロム設定に行き、localhostに関連するすべてを削除します。 Chromeのdevtools =>ネットワークタブ=>キャッシュを無効にする。 – KwintenP
ブラウザにグローバルに適用されるキャッシュを無効にするとどうなりますか?私はまだ私が使用するアプリケーションのために必要なためにキャッシュを持っていたい。 Chromeのプロセスを殺すのではなく、私が推測するような仕事を殺すことができると思います。しかし、私は解決策を見つけ、ブラウザを再起動して履歴を復元しました。そして今、それは正常に動作します。 – ysfiqbl