2012-07-11 12 views
11

私は不正アクセスをキャッチして、ログインを強制するために、次を使用します。

$.ajaxSetup({ 
    statusCode: { 
     401: function(){ 
      //do stuff 
     } 
    } 
}); 

素晴らしい作品...私のサーバー(ドメイン)上のリソースにアクセスして、今私は、サードパーティのAPIのリソースを使用しようとしていますajaxコールを介して、その401のもこれによってキャッチされます。だから、どのように私はどちらかかもしれない:

    は、(別のエラーハンドラを使用する上記のコードに例外を呼び出す)($のアヤックスを作る私のドメインからキャッチ401年代のみに上記のコードを書き換え、または

ありがとう!

答えて

12

私はその答えを発見しました。 $ .ajaxSetup()は基本的に$ .ajax()リクエストのデフォルトを設定します。しかし、世界的なセットアップはそうのような特定の要求のために無効にすることができます。

$.ajaxSetup({ 
    statusCode: { 
     401: function(){ 
      //this will catch any and all access denied errors 
     } 
    } 
}); 

$.ajax({ 
    type: 'GET', 
    dataType: 'json', 
    url: someresouceurl, 
    statusCode: { 
     401: function(){ 
      //except this one! 
     } 
    }, 
    success: function(data) { 
    } 
}); 
0
jQueryのAPIから

If the request is successful, the status code functions take the same parameters as the success callback; if it results in an error, they take the same parameters as the error callback.

私はあなたが取得し、あなたは自分のドメインに絞り込むことができるかどうかを確認jqXHRパラメータに探してお勧めだろうが、私はその点について十分に知りませんあなたに正確なコードを与えるjQueryの

+0

あなたの関数では、 'console.log(arguments、this)'を試してみてください。 1つのオブジェクトにURLが含まれている可能性があります。そのため、URLでのみ関数を実行できます。 –

1

は、あなたの401の関数で、@ MrOBrianの答えを拡張し、thisは、AJAX要求についての情報を含むオブジェクトの設定に設定されています。プロパティの1つはurlです。これを読んで、あなたのURLかどうかを調べることができます。

$.ajaxSetup({ 
    statusCode: { 
     401: function(){ 
      var url = this.url; 
      if(url === myurl){ // check if url is yours 
      } 
      else{ 
       // not your URL, do nothing 
       return; 
      } 
     } 
    } 
}); 
関連する問題