微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在特定选项卡上阻止HTTP请求?

如何解决如何在特定选项卡上阻止HTTP请求?

| 我正在开发FF插件。我想在特定选项卡中阻止除特定域(用户定义的域)以外的任何域的所有http请求。下面给出的功能可以很好地完成工作。但是问题在于它阻止了所有选项卡中的http请求。如何仅在特定选项卡中启用以下功能?如何获取与http请求关联的标签
function allowOnly(domain)
{
    //to block http request
    Components.classes[\"@mozilla.org/observer-service;1\"]
    .getService(Components.interfaces.nsIObserverService)
    .addobserver(
    {
    observe:
        function(aSubject,aTopic,aData)
        {
            if (\"http-on-modify-request\" == aTopic)
            {
                    var url = aSubject
                    .QueryInterface(Components.interfaces.nsIHttpChannel)
                    .originalURI.spec;
                    if (domain.lastIndexOf(doc.location) != 0 ) //cancel all http request of other domain & sub domain
                {
                    aSubject.cancel(Components.results.NS_BINDING_SUCCEEDED);
                    }
                }
        }
    },\"http-on-modify-request\",false);

}
    

解决方法

        这是一个示例,您可以从请求(应该是nsIChannel)中获取loadContent。
var loadContext;
try {
  loadContext = 
    aRequest.QueryInterface(Components.interfaces.nsIChannel)
            .notificationCallbacks
            .getInterface(Components.interfaces.nsILoadContext);
} catch (ex) {
  try {
    loadContext =
      aRequest.loadGroup.notificationCallbacks
              .getInterface(Components.interfaces.nsILoadContext);
  } catch (ex) {
    loadContext = null;
  }
}
nsILoadContext具有\“ associatedWindow \”,\“ topWindow \”属性,因此您应该获取源DOMWindow。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。