Чтобы дать краткий пример того, что я хочу добиться, представьте себе, мы сервер HTTP уже обслуживаем данный запрос:Удалить заголовки из централизованного потока HTTP
require('http').createServer(function(req, res) {
var payload = new Buffer('Hello World\n', 'utf8');
res.writeHead(200, {
'Content-Type': 'text/plain',
'Content-Length': payload.length,
'Connection': 'Keep-Alive'
});
res.end(payload);
}).listen(8888);
Теперь рассмотрит существование второго HTTP сервер, который получает запрос, и для его обслуживания ему необходимо вызвать первый сервер. (Классический сценарий, когда у нас есть веб-приложение, которое нужно вызвать, например, конечную точку RESTful).
var http = require('http');
http.createServer(function(req, res) {
var fwdrq = http.request({
hostname: 'localhost',
port: 8888,
path: '/',
method: 'GET'
});
fwdrq.on('response',function(response){
response.pipe(res);
});
fwdrq.on('error', function(error){
console.log(error);
});
fwdrq.end();
}).listen(9999);
Теперь, мне нравится идея обжигающе оригинальный запрос с ответом внутреннего запроса, проведенного второго сервера, что очень удобно, и это именно то, что мне нужно. Но прежде чем отправить ответ обратно клиенту, я хотел бы получить возможность удалить любые заголовки hop-by-hop из ответа, отправленного с первого сервера. Я хочу, чтобы вся полезная нагрузка была уверена, и я хочу, чтобы некоторые из заголовков были в ответе, но, конечно, не все.
Например, я хотел бы избежать отправки заголовков, таких как Proxy-Authenticate или Connection, или любого из тех, которые считаются заголовками hop-by-hop. Кроме того, я хотел бы рассмотреть возможность не отправлять обратно сохранить права, если это то, как я хочу, чтобы мой второй сервер работал, и т. Д.
Я знаю, как добавлять заголовки до отправки ответа, но после того, не имеют понятия, как я могу удалить заголовки из ответного сообщения.
Не поймите меня неправильно, я знаю, что смогу это сделать, подписавшись на события, а затем создав ответ самостоятельно, но я хочу знать, возможно ли это, если я напишу ответы.
Кто-нибудь знает, как снять этот трюк?
Интересно, я предположил, что вся полезная нагрузка будет передана по трубопроводу, но вы правы, только тело передается по трубопроводу, заголовки игнорируются. Интересно, когда в ответ добавляется заголовок Connection: keep-alive. Это не в начале запросов, но это определенно доходит до браузера. –