通过浏览器扩展更改iframe的GET REQUEST标头

时间:2014-02-28 11:40:58

标签: javascript http firefox iframe

经过一些严肃的googleing AFAIK后,无法更改iframe的http请求标头。由于这对我们的应用程序非常重要,有没有办法通过浏览器扩展来实现(Firefox就够了)?

感谢。

1 个答案:

答案 0 :(得分:0)

很久以后......

1)安装Mozilla SDK: Addons 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以便更好地理解,否则如果你能够通过这个,甚至更好,你将不会有对药物或饮料的冲动。

希望它可以帮助某人,某处......