我正在开发一个简单的 Firefox 扩展程序,它跟踪请求的 url 并在后台调用 Web 服务,该服务检测 URL 是否可疑,并根据服务返回的结果,扩展程序决定停止页面加载并提醒用户关于伪造或其他情况的信息,如果用户仍然希望转到该页面,他可以被重定向到他请求的原始页面
我添加了一个 http-on-modify-request 观察者
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(requestObserverListener.observe, "http-on-modify-request", false);
和观察者
var requestObserverListener = {observe: function (subject, topic, data) {
//alert("Inside observe");
if (topic == "http-on-modify-request") {
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
var url = subject.URI.spec; //url being requested. you might want this for something else
//alert("inside modify request");
var urlbarvalue = document.getElementById("urlbar").value;
urlbarvalue = processUrl(urlbarvalue, url);
//alert("url bar: "+urlbarvalue);
//alert("url: "+url);
document.getElementById("urlbar").style.backgroundColor = "white";
if(urlbarvalue == url && url != "")
{
var browser = getWindowForRequest(subject);
if (browser != null) {
//alert(""+browser.contentDocument.body.innerHTML);
alert("inside browser: "+url);
getXmlHttpRequest(url);
}
}
}
},
}
因此,当 URLbar 中的 URL 和请求的 url 匹配时,REST 服务将通过 ajax getXmlHttpRequest(url) 调用;方法
现在,当我运行此扩展程序时,对服务进行了调用,但在服务返回任何响应之前,页面被加载,这是不合适的,因为用户可能同时输入他的凭据并受到损害
我想首先在浏览器选项卡上向用户显示警告消息,如果他仍想访问该页面,则可以通过单击警告消息窗口中的链接将其重定向到该页面