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

标签 javascript node.js express reactjs redux

我担心我的 react/redux 应用程序的安全性,因为我的 api url 在捆绑的 app.js 文件中公开给公众。我一直在研究这个,一些开发人员以某种方式代理它,即我可以使用 api/ 而不是使用我的 api url,每当我使用像 axios 这样的库执行调用时或 superagent它被代理到我的 api url,但这样用户只能看到他们这边的 api/

我正在尝试解决这个问题,我假设这是在快速配置中设置的?

最佳答案

您的担忧是合理的。

通常,您会让客户端代码调用/api,并在 express(或您使用的任何服务器)中为“/api”创建一个路由,将请求代理到实际的 api url。

这样您就可以向客户隐藏任何敏感信息。例如身份验证 token 、api key 等。

在 express 中你可以这样做:

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);
  });
});

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

关于javascript - 在 react/redux 应用程序(代理)中隐藏 api url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968815/

相关文章:

Javascript 表单提交以激活 Spring Web Flow 与 JSF 集成的转换

node.js - 如何在 package.json 中仅针对 POST 请求设置代理?

mysql - 使用 Sequelize 一次将数据创建到三个表

javascript - 服务器不渲染 ejs 文件

javascript - 哪个 Express.js 模板按原样使用 HTML?

javascript - 来自 Cloudfront 的 Gzipped Javascript(S3 起源)

javascript - react 路由器: component not updating on url search param change

javascript - 无法在 D3 条形图中的 x 轴上换行中文文本

node.js - 我应该使用 Express static dirname 还是使用 Node.js 作为远程服务器?

node.js - 当来自 AWS ElastiCache Redis 的 'get' 时,nodejs 中的 ioredis 不执行任何操作