【问题标题】:Express proxy API calls with cookie使用 cookie 进行快速代理 API 调用
【发布时间】:2017-12-18 14:41:50
【问题描述】:

我在为我的应用程序模拟 API 调用的地方使用 express。

是否有任何代理可以用来将我的调用重定向到我的开发服务器?

下面是我的示例快递代码

var express = require('express');
var app = express();
var path = require('path');
var cors = require('cors');


app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.static(path.join(__dirname, 'dist'))); 

app.get('/brand', function(req,res){
    res.send({"brand":"Cadillac","origin":"USA"});
});

当我在本地运行我的应用程序时,我的代码“http://localhost:3000/brand”中的 API 应该重定向到“http://www-dev.abc.com/brand

在重定向之前,我还需要设置一个 cookie,因为 API 仅在存在有效 cookie 时才提供数据。

有没有我可以使用的代理?你能提供任何例子吗?

【问题讨论】:

    标签: node.js express proxy


    【解决方案1】:

    如果我理解正确,那么您的要求列表如下所示:

    1. express 的简单集成。
    2. 只代理一个端点。
    3. 仅在本地环境中使用代理。
    4. 能够为代理请求设置 cookie。

    代码示例

    var express = require('express');
    var app = express();
    var path = require('path');
    var proxy = require('express-http-proxy');
    
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(express.static(path.join(__dirname, 'dist')));
    
    if (process.env.NODE_ENV === 'production') {
      app.get('/brand', function(req,res){
        res.send({"brand":"Cadillac","origin":"USA"});
      });
    } else {
      app.use('/brand', proxy('http://www-dev.abc.com/brand', {
        proxyReqOptDecorator: function(proxyReqOpts, srcReq) {
          proxyReqOpts.headers['cookie'] = 'cookie-string';
          return proxyReqOpts;
        }
      }));
    }
    
    app.listen(8000);
    

    评论

    • 为了检查环境类型,我使用了构造process.env.NODE_ENV === 'production'
    • 最适合您要求的包是express-http-proxy,但是如果您需要代理多个端点,那将是痛苦的。在这种情况下检查http-proxy

    【讨论】:

    • 使用 express-http-proxy 如何将查询字符串参数从客户端传递到 express 服务器?
    • 您拥有此功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2013-02-07
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多