【问题标题】:Check if request is in state of re-direct检查请求是否处于重定向状态
【发布时间】:2015-11-14 15:25:19
【问题描述】:

有一种快速检查请求是否处于状态重定向(302)的方法,我使用(req,res)我使用以下?

var http = require('http'),
httpProxy = require('http-proxy');

var proxy = httpProxy.createProxyServer({});   

proxy.on('proxyReq', function(proxyReq, req, res, options) {
    proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
});

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

https://github.com/nodejitsu/node-http-proxy

【问题讨论】:

  • 您能否澄清一下 a) 您要检查哪个请求以获取 302(proxyReqreq?),以及 b) 在您的上述代码中应该发生什么?

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


【解决方案1】:

也许我不明白这个问题,但您可以轻松地做到以下几点:

proxy.on('proxyRes', function(proxyRes, req, res) {     
    if (proxyRes.statusCode === 301 || proxyRes.statusCode === 302) {
        proxyRes.headers['location'] = fixUrl(proxyRes.headers['location']);
    }
});

fixUrl()location 响应标头进行任何必要的转换。

【讨论】:

    【解决方案2】:

    您可以监听 proxyRes 事件并检查其状态码(重定向的状态码为 30x)。 ProxyRes 是来自您的目标的原始响应,因此您应该能够在代理将此响应发送到客户端之前捕获并修改响应标头。

    或者,您还可以设置处理 30 倍重定向的代理选项。将 autoRewrite 设置为 true 或显式声明 hostRewrite 和 protocolRewrite 中的位置应该可以解决问题。 https://github.com/nodejitsu/node-http-proxy#options

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2012-06-16
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2019-12-10
      • 1970-01-01
      相关资源
      最近更新 更多