Я могу получить 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
.