2017-07-31 24 views
1

JavascriptでフェッチAPIリクエストとレスポンスをインターセプトしたいと思います。JavascriptでのFetch()APIレスポンスとリクエストの拒否

例: 要求を送信する前に、要求URLを傍受して、応答を取得したい場合は、応答を傍受します。

以下のコードは、すべてのXMLHTTPRequestの応答をインターセプトするためのコードです。

(function(open) { 
XMLHttpRequest.prototype.open = function(XMLHttpRequest) { 
    var self = this; 
    this.addEventListener("readystatechange", function() { 
     if (this.responseText.length > 0 && this.readyState == 4 && this.responseURL.indexOf('www.google.com') >= 0) { 
      Object.defineProperty(self, 'response', { 
       get: function() { return bValue; }, 
       set: function(newValue) { bValue = newValue; }, 
       enumerable: true, 
       configurable: true 
      }); 
      self.response = 'updated value' //Intercepted Value 
     } 
    }, false); 
    open.apply(this, arguments); 
}; 
})(XMLHttpRequest.prototype.open); 

私はFetch()APIに同じ機能を実装することができます。事前に

感謝..私たちは下記の道のために行くことができフェッチリクエストパラメータをフェッチ要求を傍受し、傍受のために

+0

あなたはWindow.Requestインターフェイスhttps://fetch.spec.whatwg.org/#request https://developer.mozilla.org/en-US/docs/Web/APIにハッキングしたいような音/あなたが質問のコード例で行ったことに類似した何かを要求する。私は個人的にそれ以上の具体的なガイダンスを提示することはできません。それで、実験を開始したいと思うところです。 – sideshowbarker

+0

フェッチAPI呼び出しのすべての成功コールバックを検出する方法はありますか? 例: $(document).ajaxSuccess(function(event、xhr、settings){ }); –

+0

レスポンスステータスをチェックするための唯一の手段は、レスポンスオブジェクトの 'ok'属性をチェックすることですhttps://developer.mozilla.org/en-US/docs/Web/API/Response/ok:' fetch() – sideshowbarker

答えて

2

。その解決した私の問題。

const constantMock = window.fetch; 
window.fetch = function() { 
    // Get the parameter in arguments 
    // Intercept the parameter here 
    return constantMock.apply(this, arguments) 
}