Вероятно, вопрос n00b :-). Я рассматриваю node-http-proxy для создания фильтрационного прокси. В поисках примера манипуляции с строкой я обнаружил, что указатель гармоничен и успешно выполнил свой пример.
Затем я попробовал запустить свой собственный пример против HTTP-прослушивания Apache на localhost: 80. Вот мой код:
var httpProxy = require('http-proxy');
// Create an array of selects that harmon will process.
var actions = [];
var simpleaction = {};
simpleaction.query = 'head';
simpleaction.func = function (node) {
var out = '<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style>';
node.createWriteStream({ outer: true }).end(out);
console.log("head function called:" + out);
};
var simpleaction2 = { 'query' : 'body',
'func' : function (node) {
var out = '<h1>You have been proxied</h1>';
node.createWriteStream({ outer: false }).end(out);
console.log("body function called" + out);
}
};
// Add the action to the action array
actions.push(simpleaction);
actions.push(simpleaction2);
var proxy = httpProxy.createServer(
require('harmon')([], actions),
80, 'localhost'
);
proxy.listen(8899);
console.log("Up and running on port 8899");
Первоначально я получил ошибку, так как я использовал более новую версию http-proxy. Использование 0.8.7 исправлено. Выход консоли при загрузке страницы:
stw@devmachine:~/tests$ nodejs ptest.js Up and running on port 8899 head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style> body function called<h1>You have been proxied head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style> body function called<h1>You have been proxied head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style> body function called<h1>You have been proxied head function called:<style type="text/css"> h1 {color : red; border-bottom : 5px solid green} </style> body function called<h1>You have been proxied</h1>
Таким образом, он выглядит хорошо, но выход не изменяется вообще. Что я пропустил?
В конечном счете мне нужно:
<head>
src
и href
<h1>
качестве первого элемента тела)Указатели оценили!
Кажется странным Не имея полной среды для вашего теста, я не могу дать окончательного ответа. Но я собрал здесь POC, который имеет два действия, аналогичные тем, которые вы создаете.
https://gist.github.com/No9/10874082
Это прекрасно работает, если вы клонируете гармонию с git и перетащите ее в тестовую папку.
$ git clone https://github.com/No9/harmon.git $ cd harmon/test $ curl https://gist.githubusercontent.com/No9/10874082/raw/38a26d15b7ecbd875eee0988c94af0333927b98a/host-multiaction.js > host-multiaction.js $ node host-multiaction.js
Для общей функциональности с GZIP и т.д. Я бы сказал, что новая версия узла-прокси будет лучше позиционировать, чтобы обеспечить полное решение.
Я предлагаю посмотреть https://github.com/No9/harmon/issues/8 в течение следующих нескольких недель;)