如何拦截Web请求

时间:2014-01-05 18:15:59

标签: safari-extension

对于Safari扩展,是否有像Chromium的chrome.webRequest这样的内容?我查看了他们的文档here。我能找到的最接近的是SafariBeforeNavigateEvent。这将阻止新页面加载,但仍会将请求发送到服务器。此外,我认为它不会在AJAX请求上调用侦听器。有人试过类似的东西吗?

1 个答案:

答案 0 :(得分:5)

我们通过使用“xmlhttprequest”覆盖来解决这个问题。

这是我们的content.js。我们将content.js注入了启动脚本

    $(document).ready(function() {

     var myScriptTag = document.createElement('script');
     myScriptTag.src = safari.extension.baseURI + 'js/injectedToPage.js';
     document.body.appendChild(myScriptTag);     

    });    

注入的代码是:(injectToPage.js)

XMLHttpRequest.prototype.reallySend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function (body) { 

        console.log("--req.body:---");
        console.log(body);

    this.reallySend(body);

};
var req = new XMLHttpRequest();
req.open("GET", "any.html", true);
req.send(null);