Javascript 通过浏览器扩展更改iframe的GET请求头
经过一番认真的谷歌搜索之后,无法更改iframe的http请求头。因为这对我们的应用程序非常重要,有没有一种方法可以通过浏览器扩展来实现(Firefox就足够了)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 = "";
谢谢 所以过了很长一段时间 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。