使用cookie进行Express代理API调用

use*_*401 8 proxy node.js express

我正在使用express我已经为我的应用程序模拟了API调用.

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

下面是我的示例快递代码

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"});
});
Run Code Online (Sandbox Code Playgroud)

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

在重定向之前,我还需要设置一个cookie,因为API只有在有效的cookie时才会提供数据.

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

gal*_*kin 3

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

  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);
Run Code Online (Sandbox Code Playgroud)

评论

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