使用node-http-proxy更改响应cookie?

时间:2016-08-25 08:21:46

标签: node.js express cookies proxy node-http-proxy

因此,由于多种原因,我通过node-http-proxy代理我的API请求。

外部API的起源与实际客户端不同,因此未正确设置Cookie。代理显然以相同的原点运行,因此我希望从API接收响应,并在代理内部更改cookie值以反映正确的来源。

以下是我目前的设置:

// Proxy to API server
app.use('/api', (req, res) => {
  proxy.web(req, res, { target: targetUrl })
})

proxy.on('proxyRes', function (proxyRes, req, res) {
  console.log('RAW Response from the target', JSON.stringify(proxyRes.headers, true, 2))
  console.log('The original request', req.headers.host)
})

基本上,我需要将cookie修改为req.headers.host,因为这是正确的来源。

我见过Harmon,但如果我理解正确的话,这看起来非常复杂,会改变你实例化整个应用的方式。

有没有办法在接收后以同步方式修改proxyRes

有一个proxyReq事件允许您在发送代理请求之前更改代理请求,而不是允许您更改响应的等效事件,这似乎很奇怪......

1 个答案:

答案 0 :(得分:0)

对于任何面临同样问题的人,我找到了解决方案。他们刚刚合并了PR a few days ago,但尚未将其发布为新版本。

此PR引入了一个名为cookieDomainRewrite的新选项,它完全符合它的含义。只需将其包含在您的配置中,即可完成所有操作。