Страницы: 1
Всем доброго дня.
Имеется задача:
1. Отслеживать особо помеченные XHR-запросы (например, у которых есть определенный заголовок или специальное ключевое слово в URL'е) и перехватывать их до выполнения самого запроса (до открытия chanell'а)
2. Перехваченные запросы не пускать к самому серверу, но при этом не стопить их, а эмулировать успешное выполнение
3. Подсовывать заранее сгенерированный контент, доступный по nsIFile (локальный текстовик), в виде ответа от сервера.
Собственно, с пунктом 1 я справился без особых проблем. Вот пункты 2 и 3 увели меня в дебри.
Здорово помогла статья http://www.gamerotor.com/node/212 и листинг, указанный в ней. Однако у меня вариант copy-paste не прокатил, т.к. едва я вернул из метода newChannel() результат вызова ioServices.newChannel("file://myfile", null, null), то получил security alert. Этого, конечно, стоило ожидать.
И вот на этом этапе - затык... куда копать дальше? Я попробовал такой вариант:
newChannel: function(locationURI) { ... var iFile = функцияВозвращающаяNSIFILE(); // указывает на txt var istream = CC["@mozilla.org/network/file-input-stream;1"].createInstance(CI.nsIFileInputStream); // open for reading istream.init(iFile, 0x01, 0444, 0); var channel = CC["@mozilla.org/network/input-stream-channel;1"] .createInstance(CI.nsIInputStreamChannel); channel.setURI(locationURI); channel.contentStream = istream; if (channel) { return channel; } ...
Работает нормально, но такое впечатление, что firefox не понимает, что именно ему подсовывают. Текстовый файл содержит JSON (в ходе экспериментов в него были добавлены заголовки ответа HTTP-сервера).
HTTP/1.1 200 Ok
Date: Thu, 04 Mar 2010 10:52:07 GMT
Server: Apache/2.2.12 (Ubuntu) PHP/5.2.10-2ubuntu6.4 with Suhosin-Patch proxy_html/3.0.1
X-Powered-By: PHP/5.2.10-2ubuntu6.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1372
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251...content...
Ругается в консоль:
Ошибка: неправильный
Источник: http://localhost/##special-formed-url
Строка 1, символ 5
Исходный код:
HTTP/1.1 200 OK
и стрелочкой указывает на первую цифру 1 (в версии протокола).
Прошу помощи
Отредактировано pan (04-03-2010 14:32:31)
Отсутствует
Страницы: 1