在react / redux应用程序(代理)中隐藏api url

时间:2016-06-22 12:59:55

标签: javascript node.js express reactjs redux

我担心我的react / redux应用程序的安全性,因为我的api url暴露在捆绑的app.js文件中的public。我一直在研究这个并且一些开发人员以某种方式代理它,即我不使用我的api url,每当我使用axiossuperagent这样的库执行调用时我都可以使用api/并且代理到我的api网址,但这样用户只能看到api/

我想弄清楚这一点,我假设这是在快速配置中设置的?

1 个答案:

答案 0 :(得分:4)

你有一个有效的担忧。

通常,您的客户端代码会调用/例如/ api,并且在express(或您使用的任何服务器)中为" / api"创建路由。代理请求实际的api url。

这样您就可以隐藏来自客户端的任何敏感信息。例如身份验证令牌,API密钥等。

快递你可以这样做:

app.use('/api', (req, res) => {
  const method = req.method.toLowerCase();
  const headers = req.headers;
  const url = 'your_actual_api_url';

  // Proxy request
  const proxyRequest = req.pipe(
    request({
      url
      headers,
      method,
    })
  );

  const data = [];
  proxyRequest.on('data', (chunk) => {
    data.push(chunk);
  });

  proxyRequest.on('end', () => {
    const { response } = proxyRequest;
    const buf = Buffer.concat(data).toString();
    res.status(response.statusCode).send(buf);
  });
});

这个例子有点复杂,但它可能适合你。