【问题标题】:How do I make a server-side request in my client-side rendered React app?如何在客户端呈现的 React 应用程序中发出服务器端请求?
【发布时间】:2020-07-10 11:57:49
【问题描述】:

我有一个 React 应用程序,我需要在其中进行一些 API 调用,其中包括请求标头中的 API 令牌。我不关心渲染整个应用程序服务器端,因为我不关心 SEO、性能等,它只是一个爱好应用程序。

我唯一想做的就是确保 API 调用是在服务器端完成的,这样授权标头就不会显示。有没有办法实现这个?

我尝试过fetch 和axios,但它们都在“网络”选项卡中显示标题。

我只是在基本层面上真正了解 SSR 和 CSR,所以我不完全确定我想要的是否可以实现,或者服务器端 API 调用是否也需要服务器端渲染。

【问题讨论】:

  • 似乎您的 API 调用是客户端渲染后的。你能给我们看一下代码吗?
  • @user0101 例如,我有一个保存按钮,它触发一个 POST 到我自己的后端,以将页面上的用户输入保存到数据库
  • 啊,你去。这不是 SSR 的真正意义所在。在这里阅读:smashingmagazine.com/2020/07/…(What Is Server-Side Rendering? (SSR) 段落)
  • 我不想要 SSR,我只想在客户端渲染的应用程序中调用服务器端 API
  • 您的网页/应用程序上的所有交互都将导致调用不透明。不透明是指在 devtools 中可见

标签: reactjs server-side


【解决方案1】:

如果您使用的是客户端应用程序,则无法在不显示授权标头的情况下调用 api。但是,您可以做一件事,您可以在 React 应用程序和服务器之间添加一个 节点服务器 作为 中间件。您将调用 API 的 节点服务器,节点将调用具有授权的实际数据服务器。在这种情况下,用户将看不到授权密钥,因为它将由节点服务器而不是您的反应应用程序设置

如果您担心安全问题,您还可以启用 **App key ** 和 App secret 并将它们保存在节点服务器中,并且在每次 api 调用时,添加这些 **App key ** 和应用秘密与您的请求。

【讨论】:

  • 感谢您的回答,这看起来是一个不错的解决方案。什么是最好的中间件?
  • 您可以简单地添加一个节点服务器作为中间件。一个独立的 NodeJs 应用程序。
  • 我不明白这是什么意思
  • 当您调用 API 服务器时,因此在此解决方案中,您将成为节点服务器。一个独立的节点应用程序,它将仅接收您的 React 应用程序调用的 API,然后它将使用授权标头以及 APP KEY 和 APP SECRET 调用您的 API 服务器,并最终从您的 API SERVER 接收数据并将数据作为响应发送到你的 React 应用程序。
  • 快乐是我的。希望我有用:)
猜你喜欢
  • 1970-01-01
  • 2017-03-02
  • 2016-02-27
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多