如何用express-http-proxy修改响应头

背景

我正在使用express-http-proxy来代理我的SPA(单页面应用程序)和CouchDB实例之间的一些请求。 我正在做这个代理每个调用的基础上,而不是创build一个代理服务器(这将是重要的一刻)。

当前使用的例子

app.use(`some/url`, proxy(dburl, { forwardPath: req => {return 'some/url'+require('url').parse(req.url).path;} }) ); 

这意味着我不使用httpProxy.createServer 。 我想发送一些文本数据和我的回应作为标题的片段。 看完文档后,我得出结论,我想要使用intercept 。 不幸的是,我还没有完全掌握如何使用它,到目前为止,我发现的唯一 相关 问题似乎是基于httpProxy.createServer ,它出现了(从我的有限理解)以不同的方式工作。

我们正在使用个人请求代理,因为我们希望代理不同的请求到不同的微服务,并发现这是最简单的方式(我们知道和当时)这样做。

问题

给定代码

 const text = 'asdf'; app.use(`some/url`, proxy(dburl, { forwardPath: req => {return 'some/url'+require('url').parse(req.url).path;}, intercept: function(rsp, data, req, res, callback) { //SUSPECT LOCATION } }) ); 

SUSPECT LOCATION有没有一些代码可以让我把text放在最终响应头上,而不会影响(当前正在运行的)代理?

补充笔记

一般来说,标题和networking请求对我来说并不是很熟悉,如果答案似乎不言自明,我很抱歉。

附加点指向资源的链接,有助于解释使用此库进行代理的更好的一点,类似的代理库或基本技术,这将清楚如何使用此库进行代理。 另外,我宁愿花一些时间来进一步研究这个问题,而不是回头再提问。

我并不完全相信,我的代码的地方将是SUSPECT LOCATION ,我会高兴地听,如果它需要去别的地方,或者如果我们需要以不同的方式来解决这个问题。

它遵循req,res对象上的express.js方法。

在截取函数体内,使用以下表示格式设置响应头。

 res.set('hola', 'amigos!!!'); 

请参阅以下链接:
http://expressjs.com/en/4x/api.html#res.set

没有文档的时候理解一个库的最好方法是跟随它的testing套件。 如果没有testing套件,则不要使用该库。

这是express-http-proxy拦截function的testing套件
https://github.com/villadora/express-http-proxy/blob/master/test/intercept.js

这是testing案例

 it('can modify the response headers', function(done) { var app = express(); app.use(proxy('httpbin.org', { intercept: function(rsp, data, req, res, cb) { res.set('x-wombat-alliance', 'mammels'); res.set('content-type', 'wiki/wiki'); cb(null, data); } })); request(app) .get('/ip') .end(function(err, res) { if (err) { return done(err); } assert(res.headers['content-type'] === 'wiki/wiki'); assert(res.headers['x-wombat-alliance'] === 'mammels'); done(); }); }); 

如果你想解决代理问题,最好的资源是haproxy
http://cbonte.github.io/haproxy-dconv/1.7/intro.html

但在此之前,你需要更多的了解http(一个build设性的评论)