现在,我在客户端javascript中使用OpenWeatherMap API密钥,用于简单的天气应用程序(节点/快速)。我知道这在开发之外并不理想,所以我做了npm install dotenv。 在服务器端,我可以在Node中获得并设置env变量。我在console.log退出时可以看到它们。
如何在客户端的JavaScript中调用API密钥?例如,当前我的天气应用程序在名为weather.js的文件中具有其简单的逻辑,而HTML使用weather.js。
理想情况下,我想像http://api.openweathermap.org/data/2.5/forecast/daily?lat=${lat}&lon=${lon}&units=metric&appid=${process.env.WEATHER_API_KEY}
我知道.envs在服务器端,您必须做一些工作才能使其在客户端工作。这里的新Node开发人员阅读过多,我认为我对requireJS,Browserify,模块,.env等感到困惑。
答案 0 :(得分:2)
您不希望您的API密钥(或其他机密)公开。在前端使用它们将使它们在检查页面和网络请求日志时可见。您需要在服务器端存储和使用您的机密。
在您的后端上创建一条路由(使用CORS保护其他域不使用该路由),该路由会调用天气API(使用存储在服务器上.env
中的令牌),并发送回数据。
然后让您的前端到达那条路线。
答案 1 :(得分:0)
您将必须从服务器请求API密钥。
通过在后端进行一条简单的路由即可轻松完成此操作,该路由将返回密钥作为响应。
如果您不想公开您的API密钥(建议您不要公开),您可以做的是在后端创建一条路由,该路由将使用您的API密钥来调用WeatherAPI,客户端将向您的后端发送HTTPS请求,然后后端将向WeatherAPI创建另一个HTTPS请求,并将响应发送回客户端。
答案 2 :(得分:0)
您不想将API密钥公开给外界。您可以做的是创建后端路由(/ api / keys),使其受CORS保护,并从前端调用它。