当前位置: 首页 > 面试题库 >

用node-http-proxy重写响应头

鄢子平
2023-03-14
问题内容

我使用的是node-http-proxy,想要监视特定的响应标头,并在必要时重写它。这里有人建议这样做吗?

我的代理服务器位于几个不同的节点服务器以及一个Java
WebApp的前面。Java应用程序正在设置Cookie,但是该Cookie的路径相对于Web应用程序的上下文。我需要cookie是安全的,并且有一个无需修改Java应用程序即可到达root的路径。

换句话说,将返回以下标头:

set-cookie: MYSPECIALCOOKIE=679b6291-d1cc-47be; Path=/app; HttpOnly

我想将Path值重写为:

set-cookie: MYSPECIALCOOKIE=679b6291-d1cc-47be; Path=/; HttpOnly; Secure

我不清楚如何使用node-http-proxy做到这一点。有什么建议吗?有中间件可以帮助您吗?


问题答案:

您可以通过重载响应对象的writeHead函数来实现。例如,此代码会将“ foo”响应标头设置为值“
bar”。我已经指出了可以在其中添加自己的逻辑以更改标头值的地方。

JavaScript不是我的主要语言,因此可能有一种惯用的方法来重载writeHead方法。

httpProxy = require('http-proxy');

httpProxy.createServer(function (req, res, proxy) {

  res.oldWriteHead = res.writeHead;
  res.writeHead = function(statusCode, headers) {
    /* add logic to change headers here */
    var contentType = res.getHeader('content-type');
    res.setHeader('content-type', 'text/plain');

    // old way: might not work now
    // as headers param is not always provided
    // https://github.com/nodejitsu/node-http-proxy/pull/260/files
    // headers['foo'] = 'bar';

    res.oldWriteHead(statusCode, headers);
  }

  proxy.proxyRequest(req, res, {
    host: 'localhost',
    port: 3000
  });
}).listen(8000);


 类似资料:
  • node-http-proxy 是一个全功能的 Nginx 的 HTTP 代理扩展,支持 WebSocket 。

  • 问题内容: 请告诉我,什么是部署nodejs应用程序nginx或node-http-proxy的首选方法。什么是最可靠的? 我需要的基本功能是 将所有请求代理到非80个帖子 负载均衡器 Websocket支持 问题答案: 这是一篇有关该主题的出色文章,网址为http://www.exratione.com/2012/07/proxying-websocket- traffic-for-nodejs

  • 我想做一个简单的Node.js反向代理,将多个Node.js应用程序以及apache服务器托管在同一个端口80上。所以我在这里找到了这个例子 我之所以这么做,是因为我的apache服务器处理了很多域/子域,我不想每次添加新的子域时都必须修改这个路由表。

  • 设置http代理(也支持socks代理、https代理),配置方式: pattern proxy://ip:port # 加用户名密码 pattern proxy://username:password@ip:port 也可以用 http-proxy pattern参见匹配模式,更多模式请参考配置方式。 例子: 把所有请求代理到127.0.0.1:8888的代理服务器: * proxy://1

  • 我想在java中对API的HTTP响应实现重试框架。 如果回答是: 400:将json中的参数设为null,然后重试 202:返回成功 429:请等待2分钟,然后重试 5XX:等待5分钟,然后重试 如果重试次数超过,则抛出异常。是否有任何可用的库支持重试响应类型并允许编辑请求对象?如果没有,我怎么能设计一个?有没有围绕它的教程?

  • 主要内容:HTTP响应完整格式HTTP响应完整格式 HTTP的响应也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应示例: ①报文协议及版本; ②状态码及状态描述; ③响应报文头,也是由多个属性组成; ④响应报文体,即我们真正要的“干货”。