Привет всем.

Имеется http listener с использованием nsIObserverService и http-on-modify-request. Как можно определить что request относится к пользовательскому запросу, т.е. тому который в строке адреса, а не для рисунков, стилей, скриптов и тд?

Спасибо.

logik
https://developer.mozilla.org/en/Code_s … tification ?

не решение. для внутренних ссылок такой же результат, как и для главной.

Он будет пустой, если руками вбивать. Если же по ссылке переходить, то нет, а топикстартер такие запросы вроде тоже хочет отлавливать.

Мне кажется, что в приведенном примере вот такая величина должна иметь разное значение для «пользовательских запросов» и всего остального:

Выделить код

Код:

subject.loadFlags & Components.interfaces.nsIChannel.LOAD_DOCUMENT_URI
logik пишет

не решение. для внутренних ссылок такой же результат, как и для главной

А если сравнивать contentDocument.URL browser'а, полученного в результате примера по моей ссылке, с nsIChannel.URI.spec?

18-08-2011 05:03:38

luitzen пишет

Если же по ссылке переходить, то нет, а топикстартер такие запросы вроде тоже хочет отлавливать.

В таком случае, по-моему, лучше будет проверять флаг LOAD_INITIAL_DOCUMENT_URI.

okkamas_knife пишет

попробуй смотреть referrer

реферер может быть пустой, если руками вбивать, и может быть указан для внутренних ссылок. для скриптов в частности.

hydrolizer пишет

А если сравнивать contentDocument.URL browser'а, полученного в результате примера по моей ссылке, с nsIChannel.URI.spec?

нельзя, когда запрос приходит в listener, в броузере еще может быть about:blank

luitzen пишет

subject.loadFlags & Components.interfaces.nsIChannel.LOAD_DOCUMENT_URI

а вот это похоже то что нужно, только действительно как было предложено лучше использовать LOAD_INITIAL_DOCUMENT_URI. LOAD_DOCUMENT_URI похоже пропускает ajax запросы.
Спасибо за помощь.

кстати тут же еще один вопрос появился. в компоненте listener-a не могу обращаться к настройкам плагина.
получаю Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref]

в чем тут может быть проблема?

logik
Какой длины строка настройки? Эта строка содержит юникод? В общем случае - попробуйте стринговую настройку получать через nsIPrefBranch.getComplexValue(имя_настройки, Ci.nsISupportsString).data.

hydrolizer пишет

logikКакой длины строка настройки? Эта строка содержит юникод? В общем случае - попробуйте стринговую настройку получать через nsIPrefBranch.getComplexValue(имя_настройки, Ci.nsISupportsString).data.

не в длине дело, из оверлея все нормально читается. создал тестовую настройку с коротким именем и значением из цифр. возможно тут пермишены какие-то дополнительно нужно указать.

разобрался. почему-то решил что настройки из компонента нужно получать добавляя extensions. вместе с именем. где-то в примере видел.
.getBranch("extensions.myextension.");
когда убрал extensions. нормально отработало.