【发布时间】:2020-11-11 09:46:16
【问题描述】:
我正在学习使用 Node (Express) + React 构建天气应用程序。我已成功从开放天气 API 获取天气数据。
但是,我在我的 React 应用程序中直接使用开放天气 API 密钥,例如 const weatherURL = 'http://api.openweathermap.org/data/2.5/weather?q=london,uk&APPID=1234567qwerty';。显然这是不安全的,因为它会将 API 密钥暴露给客户端。我曾考虑将 API 密钥存储在 .env 文件中,但根据 [this answer][1],我不应该将 API 密钥存储在 .env 文件或 .gitignore 中。正确的方法是向后端 API 发出请求,然后对后端进行 API 调用并将数据发回。我不知道该怎么做。有人可以帮忙吗?
以下是我的节点js代码:
const express = require('express');
const cors = require('cors');
const app = express();
const SELECT_ALL_QUERY = 'SELECT * FROM `mySchema`.`myTable`;';
app.use(cors());
app.get('/', (req, res) => {
res.send('go to /myTable to see content')
});
const pool = require('./awsPool');
pool.getConnection((err, connection) => {
if (err) {
return console.log('ERROR! ', err);
}
if(!connection) {
return console.log('No connection was found');
}
app.get('/myTable', (req, res) => {
console.log(connection);
connection.query(SELECT_ALL_QUERY, (err, results) => {
if (err) {
return res.send(err)
}
else {
return res.json({
data: results
})
};
});
});
});
let port=process.env.PORT||4000;
app.listen(port, () => {
console.log(`App running on port ${port} `);
});```
[1]: https://stackoverflow.com/a/57103663/8720421
【问题讨论】:
-
你说的是设置代理服务器...看看那个...
-
nodeJs/Express 的用户护照中间件。他们提供了护照头apikey策略,您可以使用该策略创建和授权apiKey。 passportjs.org/packages/passport-headerapikey