2016-03-25 7 views
4

を許可されていない私はアヤックスリクエストヘッダフィールドプラグマは、プリフライト応じてアクセス制御 - 許可 - ヘッダにより

angularApp.config(['appConfig', '$httpProvider', function (appConfig, $httpProvider) { 

if (!$httpProvider.defaults.headers.get) { 
    $httpProvider.defaults.headers.get = {}; 
} 

//disable IE ajax request caching 
$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'; 
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; 
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache'; 

}]); 

のキャッシュを無効にするには、次のコードを維持しようとしていたとき、私はこのエラーを取得しています私は取得しています

リクエストヘッダーフィールドプリフライトレスポンスでAccess-Control-Allow-Headersによってプラグマが許可されていません。

しかし、次のコードを削除すると、正常に動作します。

$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'; 
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; 
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache'; 

どのような問題が発生する可能性がありますか?

+0

サーバは 'PRAGMA'ヘッダを許可していません。他に何を知っておく必要があるか分かりません。キャッシュされた応答を使用したくない場合は、非常に良い理由があります。 – zeroflagL

+0

この問題を解決するにはどうすればいいですか – user1268130

+0

これに応じてサーバーを構成する必要があります。 'no-cache'と' If-Modified-Since'は互いに排他的です。 – zeroflagL

答えて

1

これらのヘッダーを受け入れるようにサーバー側で設定できる場合は、問題ありません。 そうでなければ、$ httpProvider.defaulstsで設定されているヘッダーを削除する必要があります。 下記のコードを確認してください:

var data = {} 
var httpCoonfig = { 
    headers: {'Pragma': undefined, 'Cache-Control': undefined, 'X-Requested-With': undefined, 'If-Modified-Since': undefined} 
}; 
$http.post('https://www.google.com/', data, httpCoonfig).then(function(response){ 
// console.log(response) 
}, function(response){ 
    console.log(response) 
}); 
関連する問題