2016-10-20 11 views
1

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エラーがなくても正常に動作します。

キャッシュの問題のようですが、キャッシュ全体をクリアしたくありません。これをどうすれば解決できますか?

+0

あなたができることは、クロムプロセスを殺すことです。 ctrl + F5を押してハードリフレッシュを実行します。クロム設定に行き、localhostに関連するすべてを削除します。 Chromeのdevtools =>ネットワークタブ=>キャッシュを無効にする。 – KwintenP

+0

ブラウザにグローバルに適用されるキャッシュを無効にするとどうなりますか?私はまだ私が使用するアプリケーションのために必要なためにキャッシュを持っていたい。 Chromeのプロセスを殺すのではなく、私が推測するような仕事を殺すことができると思います。しかし、私は解決策を見つけ、ブラウザを再起動して履歴を復元しました。そして今、それは正常に動作します。 – ysfiqbl

答えて

0

ブラウザを再起動して履歴を復元することで、この問題を解決できました。私は関連するすべてのローカルホストを事前に削除しました。

ブラウザの履歴をクリアしても問題ありませんでしたが、やりたくありませんでした。

関連する問題