【问题标题】:Recommended approach on back-end server to handle API keys?后端服务器上处理 API 密钥的推荐方法?
【发布时间】:2020-08-17 19:37:53
【问题描述】:

我正在构建一个必须从 Riot Developer Portal 请求数据的网站。我已经阅读了文档并尝试使用 fetch()。

fetch('https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/Doublelift?api_key="KEY')
  .then(response => response.json())
  .then(data => console.log(data));

这导致出现 CORS 错误,我对此进行了调查。并且了解基本上您可以这样做,因为您的 API 密钥将在客户端,这将是一个安全问题。

  • 请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。*

我尝试使用模式:“no-cors”或“cors”。

所以我需要创建一个后端服务器,但我不知道该怎么做。在搜索中我找到了这个指南:AWS Guide to setting up server API Gateway with Lamda 但是 AWS 界面已经改变,所以我不知道如何遵循这个指南。

我的主要问题: 我如何正确了解后端服务器并能够解决此问题?

【问题讨论】:

  • 恐怕“我如何构建后端服务器”对于 Stack Overflow 来说是一个过于宽泛的问题。幸运的是,有大量的库/框架可以让它变得简单,所以我建议简单地选择你最喜欢的后端语言并在谷歌上搜索该语言的网络框架 - 你可能会发现很多可供选择!

标签: javascript api server fetch backend


【解决方案1】:

实现后端的最简单方法(如果您是 javascript 开发人员)是通过 node.js 和使用 express.js 框架。观看有关使用 express/node.js 创建 rest api 的 youtube 指南

您将 fetch() 到您的服务器,该服务器将 fetch() 到 Riot 的 API,然后将响应返回到您的字体端。 Cors 由浏览器应用,这就是为什么您需要您的服务器向 Riot 的 API 发出请求的原因。由于它是您的服务器,因此您可以将其配置为接受来自您的域或 IP 地址的 cors。

您可以非常轻松地在 heroku 上部署您的后端。 AWS API Gateway 和 Lambda 也是一个不错的选择,但对于学习后端技巧的人来说稍微困难一些。

【讨论】:

  • 您可以通过提供示例代码大大改进这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2018-02-12
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
相关资源
最近更新 更多