我想在firefox的扩展中检查http请求。为了开始弄清楚如何做我想做的事情,我想我只需记录所有内容,看看会出现什么:
webRequest.onResponseStarted.addListener(
(stuff) => {console.log(stuff);},
{urls: [/^.*$/]}
);
域名无关紧要,我知道正则表达式可以在控制台中验证。运行此代码时,我没有记录。当我拿出过滤器参数时,我得到了每个请求:
webRequest.onResponseStarted.addListener(
(stuff) => {console.log(stuff);}
);
很酷,我可能做错了什么,但我看不清楚。
另一种方法是自行手动过滤:
var webRequest = Components.utils.import("resource://gre/modules/WebRequest.jsm", {});
var makeRequest = function(type) {
webRequest[type].addListener(
(stuff) => {
console.log(!stuff.url.match(/google.com.*/));
if(!stuff.url.match(/google.com.*/))
return;
console.log(type);
console.log(stuff);
}
);
}
makeRequest("onBeforeRequest");
makeRequest("onBeforeSentHeaders");
makeRequest("onSendHeaders");
makeRequest("onHeadersReceived");
makeRequest("onResponseStarted");
makeRequest("onCompleted");
使用上面if的console.log,我可以看到正则表达式在我想要的时候返回true,并且代码使它超过if。当我删除上面的console.log时if if不再执行。
我的问题是,如何让过滤参数起作用或者如果确实破坏了,我怎样才能让代码超过if执行?显然,这是一个消防水带,为了开始寻找解决方案,我需要减少数据。
由于
答案 0 :(得分:0)
urls
必须是match patterns的字符串或数组。不支持正则表达式。
WebRequest.jsm
使用resource://gre/modules/MatchPattern.jsm
。有人可能会对util/match-pattern
附加sdk api感到困惑,因为它支持正则表达式。