Javascript 通过浏览器扩展更改iframe的GET请求头

Javascript 通过浏览器扩展更改iframe的GET请求头,javascript,http,firefox,iframe,Javascript,Http,Firefox,Iframe,经过一番认真的谷歌搜索之后,无法更改iframe的http请求头。因为这对我们的应用程序非常重要,有没有一种方法可以通过浏览器扩展来实现(Firefox就足够了) 谢谢 所以过了很长一段时间 1) 安装Mozilla SDK: 按照说明创建扩展目录结构 2) 在lib/main.js脚本中: 17 var {Cc, Ci} = require("chrome"); 18 var data = require("sdk/self").data; 19 var _header = "";

经过一番认真的谷歌搜索之后,无法更改iframe的http请求头。因为这对我们的应用程序非常重要,有没有一种方法可以通过浏览器扩展来实现(Firefox就足够了)


谢谢

所以过了很长一段时间

1) 安装Mozilla SDK:

按照说明创建扩展目录结构

2) 在lib/main.js脚本中:

 17 var {Cc, Ci} = require("chrome");
 18 var data = require("sdk/self").data;
 19 var _header = "";
 20 
 21 
 22 // Define observer
 23 var httpRequestObserver =
 24 {
 25     observe: function(subject, topic, data) {
 26         if (topic == "http-on-modify-request") {
 27             var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
 28             httpChannel.setRequestHeader("User-Agent", _header, false);
 29         }
 30     }
 31 };
 32 
 33 // Register observer
 34 var observerService = Cc["@mozilla.org/observer-service;1"]
 35                                 .getService(Ci.nsIObserverService);
 36 
 37 observerService.addObserver(httpRequestObserver, "http-on-modify-request", false);
 38 
 39 var pageMod = require("sdk/page-mod");
 40 
 41 pageMod.PageMod({
 42     include: ["*"],
 43     contentScriptFile: data.url("content.js"),
 44     onAttach: function(worker) {
 45         worker.on("message", function(message) {
 46             _header = message;
 47         }); 
 48     }   
 49 });
3) 然后在data/content.js短片段中:

  1 document.defaultView.addEventListener("message", function(event) {
  2 
  3     //alert(event.data);
  4 
  5     self.postMessage(event.data);
  6 
  7 }, false);
4) 最后,在页面脚本中,您只需进行简单调用:

window.postMessage("CONST_STR;" + data.foo + ";" + data.bar, "*");
由于这是一个相当复杂的野兽,人们应该去RTFM以获得更好的理解,否则如果你能通过这个,甚至更好,你就不会有吸毒或喝酒的冲动


希望它能帮助某人,某处…

为了让事情变得更清楚,我应该能够在javascript中调整用户代理,这应该告诉extension更改UA,或者至少向http头添加一个新变量,如X-user-agent。