Добрый день!

Как получить referrer?

Выделить код

Код:

var ioService = Components.classes["@mozilla.org/network/io-service;1"]
                          .getService(Components.interfaces.nsIIOService);

var referrerURI = ioService.newURI(aURI, null, null);
var channel = ioService.newChannelFromURI(referrerURI);
var httpChannel = channel.QueryInterface(Components.interfaces.nsIHttpChannel);
alert(httpChannel.referrer);

Так получаю null

Большой пишет

Как получить referrer?

Ну, вроде, получил ведь. И - да, он действительно null.
Возможно предпоследняя строка не нужна вовсе. Добавь:

Выделить код

Код:

alert(channel);
alert(channel === httpChannel);
Dumby пишет

Возможно предпоследняя строка не нужна вовсе.

Это я погорячился, без неё referrer не хочет устанавливаться.

скрытый текст

Выделить код

Код:

var site = "https://target.com";
var ref = "http://referrer.org";

var ioService = Components.classes["@mozilla.org/network/io-service;1"]
                          .getService(Components.interfaces.nsIIOService);
                          
var channel = ioService.newChannelFromURI(makeURI(site, null, null));

channel.QueryInterface(Components.interfaces.nsIHttpChannel);

channel.referrer = makeURI(ref, null, null);

alert(channel.referrer.spec);

Большой
nsIHttpChannel.setRequestHeader()
nsIHttpChannel.getRequestHeader()
Ну, или и правда, вроде, можно через свойство referrer присваивать. Но изначально там ничего нет.

Возможно я неправильно выразился.
Мне необходимо узнать url с которого произошел переход пользователя по ссылке.
Вешать на каждую ссылку лисинер неразумно.

У каждого окна есть window.document.referrer.

Infocatcher пишет

У каждого окна есть window.document.referrer.

Так он пустой.

okkamas_knife пишет

юзер послал запрос на получение этой странички - в этом запросе содержится реферер указывающий адрес который был открыт в тот момент, сервер парсит этот хттп запрос и генеря страничку вставляет в неё это значение.

Незнал

08-01-2013 03:09:56

okkamas_knife пишет

сервер парсит этот хттп запрос и генеря страничку вставляет в неё это значение.

И вытащить разве нельзя.

okkamas_knife пишет

скриптом на страничке Б мы можем узнать о страничке А только вытащив его из команды перехода назад

Почему сам же говорил ранее что вставляет

решил так.

Выделить код

Код:

onLocationChange: function(aProgress, aRequest, aURI) {
     if(aRequest.referrer && aRequest.referrer.spec)  
         alert("url = " + aURI.spec + "    referer= " + aRequest.referrer.spec);
}