Javascript Firefox加载项observer http on modify请求无法正常工作

Javascript Firefox加载项observer http on modify请求无法正常工作,javascript,firefox,http-headers,firefox-addon,reload,Javascript,Firefox,Http Headers,Firefox Addon,Reload,我的插件中有一个奇怪的bug, 插件本身需要为特定域添加请求头参数, 这一切都在工作,但问题是,修改请求上的ObserverHTTP在开始时没有被调用,只有当我重新加载页面时,它才工作 我的意思是: 我去mysite.com/-没有修改标题 我重新加载页眉模式 再次重新加载-标头已模式化 mysite.com上的新选项卡-未修改标题 “重新加载”选项卡-标题已模式化 我的代码,我正在使用插件sdk: exports.main = function(options,callbacks) { //

我的插件中有一个奇怪的bug, 插件本身需要为特定域添加请求头参数, 这一切都在工作,但问题是,修改请求上的ObserverHTTP在开始时没有被调用,只有当我重新加载页面时,它才工作

我的意思是:

  • 我去mysite.com/-没有修改标题
  • 我重新加载页眉模式
  • 再次重新加载-标头已模式化
  • mysite.com上的新选项卡-未修改标题
  • “重新加载”选项卡-标题已模式化
  • 我的代码,我正在使用插件sdk:

    exports.main = function(options,callbacks) {
    
    // Create observer 
    httpRequestObserver =  
    {  
      observe: function(subject, topic, data)  
      {  
    
        if (topic == "http-on-modify-request") {
    
    
        //only identify to specific preference domain
        var windowsService = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator);
        var uri = windowsService.getMostRecentWindow('navigator:browser').getBrowser().currentURI;
        var domainloc = uri.host;
    
            if (domainloc=="mysite.com"){
                var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);  
                httpChannel.setRequestHeader("x-test", "test", false);  
            }
        }  
    
    
      }, 
    
      register: function()  
      { 
        var observerService = Cc["@mozilla.org/observer-service;1"]  
                .getService(Ci.nsIObserverService);  
        observerService.addObserver(this, "http-on-modify-request", false);         
      },  
    
      unregister: function()  
      {
        var observerService = Cc["@mozilla.org/observer-service;1"]  
                .getService(Ci.nsIObserverService);  
        observerService.removeObserver(this, "http-on-modify-request"); 
    
    
      }  
    };
    
    
    //register observer
    httpRequestObserver.register();
    
    };
    
    exports.onUnload = function(reason) {
    
    httpRequestObserver.unregister();
    };
    
    请帮帮我,我搜索了几个小时没有结果。 代码正在工作,但不是在第一次加载页面时, 除非我重新装弹


    我们的目标是,只有在mysite.com上,才会一直有
    x-text=test
    头请求,但只有在mysite.com上才有。

    currentUri
    on browser是当前加载到选项卡中的Uri。在“http on modify request”通知时间,请求尚未发送到服务器,因此如果是新选项卡,浏览器没有任何
    currentUri
    。当您在适当的位置刷新选项卡时,它使用当前页面的uri,并且似乎可以正常工作

    请尝试以下方法:

    if (topic == "http-on-modify-request") {
        var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);  
        var uri = httpChannel.URI;
        var domainloc = uri.host;
    
        //only identify to specific preference domain
        if (domainloc == "mysite.com") {
            httpChannel.setRequestHeader("x-test", "test", false);
        }
    }