我想通过使用http-on-modify-request获取http请求时获取http标头的完整信息。
我想要获得的信息示例:
我有这段代码:
myObserver.prototype = {
observe: function(subject, topic, data) {
if("http-on-modify-request"){
var httpChannel =
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
alert("URI: " + httpChannel.originalURI.spec);
alert("User-Agent: " + httpChannel.getRequestHeader('user-agent'));
}
},
register: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.addObserver(this, "http-on-modify-request", false);
},
unregister: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.removeObserver(this, "http-on-modify-request");
}
}
答案 0 :(得分:0)
我的两分钱。
IN JAVASCRIPT
var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
console.log(headers);
alert(headers)
在PHP中
<?php echo $_SERVER["HTTP_REFERER"]; ?>
答案 1 :(得分:0)
我从来没有使用过一种方法来同时获取它们,但你应该能够按照自己的方式单独获取它们。
我也为引用者尝试过,但它没有用,但我发现如果你这样做:
httpChannel.referrer.host
(推荐者有两个r),它显示了引用者的地址。
此外,您可能需要查看httpfox的源代码,它会执行您要执行的操作。
您可以在此链接中找到其他帮助:nsITraceableChannel, Intercept HTTP Traffic | Software is hard
答案 2 :(得分:0)
您的观察功能应如下所示:
observe: function(subject, topic, data) {
if (topic === "http-on-modify-request") {
var channel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
alert("URI: " + channel.URI.asciiSpec);
channel.visitRequestHeaders(function(name, value) {
// do something with each header
if (name === 'User-Agent') {
alert(name+': '+value);
}
});
}
},