javascript - SWR 在每个 api 调用中都会公开 client-id 和 Bearer 令牌,我应该正确对待
问题描述
长话短说,我刚刚使用 NextJs、NextAuth 和 SWR 构建了一个应用程序,我使用 SWR 调用多个 Twitch API,以验证 Twitch API 我使用我的 Twitch 应用程序 Client-Id 和登录的用户 Bearer 令牌,它是取自 NextAuth 的会话对象。
我担心的是,每当 SWR 执行 API 函数来使用数据填充页面或更新页面时,您可以在 chrome 或 firefox 开发工具中捕获网络调用时轻松查看请求标头。这主要是关于这是一个生产环境并且它仍然会发生,这也违反了 Twitch 开发人员文档并且非常肯定有“警告:将您的令牌视为密码。例如,永远不要在任何公共 URL 中使用访问令牌,并且永远不要在任何网页上显示令牌,而无需单击即可消除混淆。 ”
有没有办法或解决方案来隐藏这些?
现在我的下一个最好的问题是我怎样才能阻止这种情况发生,他们甚至是一种方式吗?
解决方案
无需惊慌。可以在请求的Authorization
标头中包含不记名令牌 - 实际上这是发送它们的标准方式。你不能从 Chrome 的开发工具中隐藏它,因为这会破坏它的目的。
您阅读的建议永远不要在任何公共 URL 中使用访问令牌可能意味着永远不要在 URL 中显示它们,mywebsite.com/?token=[abcd]
因为这样可以通过浏览器历史记录访问它,或者不要将专为一项服务设计的令牌发送到另一项服务的 API。
这与 SWR 无关——它是标准的 HTTP 行为。
推荐阅读
- javascript - Return observable from async function
- javascript - 如何更新在 JSX.Element 中创建的组件?
- python - 使用 pip 7.1.2 和 Python 3.5 完全无法安装任何包
- python - 使用 IMDB 数据集 get_word_index 错误进行文本分类,如何更改路径
- firebase-authentication - 我可以更改 Firebase Auth Rest API 的 ID 令牌到期时间吗?
- powershell - 递归列出目录并排除某些文件和子目录
- c - Contiki 中的头文件在哪里?
- reactjs - 尝试导入错误:“addLocaleData”未从“react-intl”导出
- git - 从旧提交中删除文件而不影响 gitlab 中的任何其他提交
- elasticsearch - 使用 ElasticSearch 的 Jaeger