Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№103-01-2012 01:31:59

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.6

Перехват XMLHTTPRequest запросов и ответов на них.

Планирую расширение для сайта использующего XMLHTTPRequest, ранее с ним работать не приходилось и возникли трудности. По задумке -  нужно отследить запрос на сервер, если он из тех что требуется то перехватить  и ответ на него, но покачто не подобрал даже какие события надо слушать,  нет ли статьи на русском где это описано?  В расширение Firebug найти ответа не вышло, как-то там много всего.  :rolleyes:

Отсутствует

 

№203-01-2012 07:42:06

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 10.0

Re: Перехват XMLHTTPRequest запросов и ответов на них.

Отсутствует

 

№326-01-2012 03:49:19

bidlocoder
Участник
 
Группа: Members
Зарегистрирован: 30-09-2010
Сообщений: 52
UA: Firefox 9.0

Re: Перехват XMLHTTPRequest запросов и ответов на них.

а вот маленький пример

Выделить код

Код:

var fake_cookie;
var listener = {
    observe:function (aSubject, aTopic, aData) {
        // Make sure it is our connection first.
        if (aSubject == ((scc.online) ? scc.req2.channel : scc.req.channel)) {
            var httpChannel = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
            if (aTopic == "http-on-modify-request") {
                if (httpChannel.getRequestHeader('Cookie').indexOf('xxxxxxxxx') != -1) {
                    httpChannel.setRequestHeader('Cookie', fake_cookie, false);
                }
                ;
            } else if (aTopic == "http-on-examine-response") {
                // ...
            }
        }
    },

    QueryInterface:function (aIID) {
        if (aIID.equals(Components.interfaces.nsISupports) ||
            aIID.equals(Components.interfaces.nsIObserver))
            return this;
        throw Components.results.NS_NOINTERFACE;
    }
};

// get the observer service and register for the two coookie topics.
//function  add_obs(){
var observerService = Components.classes["@mozilla.org/observer-service;1"]
    .getService(Components.interfaces.nsIObserverService)
observerService.addObserver(listener, "http-on-modify-request", false);

Отредактировано bidlocoder (26-01-2012 03:50:16)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]