Получить POST-данные текущей веб-страницы в расширении Firefox - PullRequest
2 голосов
/ 09 июля 2011

Я могу получить URL текущей страницы в расширении Firefox, но я бы тоже хотел получить данные POST.Firefox хранит его где-то, чтобы отправить снова при обновлении.Как я могу получить его из моего расширения?

Я мог бы, вероятно, перехватывать каждый запрос, как Firebug, но я бы предпочел избежать этого и получать данные POST только по требованию.

Я использую дополнительный SDK (джетпак) .Я попробовал код из этой страницы в моем основном скрипте:

{Cc,Ci} = require("chrome");

wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
mainWindow = wm.getMostRecentWindow("navigator:browser");

history = mainWindow.gBrowser.selectedBrowser.webNavigation.sessionHistory;

postdata = history.getEntryAtIndex(history.index-1,false).QueryInterface(Ci.nsISHEntry).postData;

postdata.QueryInterface(Ci.nsISeekableStream).seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
stream = Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci.nsIBinaryInputStream);
stream.setInputStream(postdata);
postBytes = stream.readByteArray(stream.available());
poststr = String.fromCharCode.apply(null, postBytes);

console.log(poststr);

Но он не работает на

postdata.QueryInterface(Ci.nsISeekableStream).seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);

Потому что postdata is null (TypeError).

Я также пробовал этот метод в скрипте содержимого, прикрепленном к активной вкладке, но он завершается неудачно с отклонением разрешения при получении Components.classes.

1 Ответ

2 голосов
/ 12 июля 2011

Этот код извлекает данные POST последней страницы, а не текущей.

Я изменил history.index-1 на history.index, и он работает.

...