【问题标题】:What is the best method for Backend and Frontend communication (incl. SessionID)? [closed]后端和前端通信(包括 SessionID)的最佳方法是什么? [关闭]
【发布时间】:2022-02-09 15:31:27
【问题描述】:

我有一个小项目正在运行,我问自己,如何去做。我在两台服务器上托管。一个用于后端,一个用于前端。后端服务器在 NodeJS 和 DB MongoDB 上运行,我已经有自己的小 API 可以与之通信。在前端服务器上,我使用的是 React。我现在的问题:在前端创建 SessionID 并通过前端服务器将其发送到后端服务器的最佳方法是什么?

例如,SessionID3 应该在他的网站上显示一辆自行车,而 SessionID2 应该在他的网站上显示一辆汽车(这两个信息都存储在数据库的后端服务器上)。

期待您的回复,谢谢!

【问题讨论】:

    标签: node.js reactjs api frontend backend


    【解决方案1】:

    大多数 Jamstack 设置都有一个 API 服务器,以 json/raw(如 Github's developer API)的形式提供内容,其中 Nodejs 和 JavaScript 有一个内置功能,允许快速转换为带有引用的 JSON 对象可以在 MDN 上阅读。

    Diagram of Jamstacking with React & Vue

    ^ 因为它实际上是客户端发送请求并完成大部分工作而不是前端服务器,您可以使用universal-cookie 设置或获取会话ID 永久,解析将其转换为 JSON 并与 POST 请求一起发送到后端 API。您也可以使用Math.random(min, max) 来执行此操作,并且您只想发送一串随机数字。

    Axios 是异步的,因此您想使用 async/await.then() 使其正常工作。你可以在https://axios-http.com/docs/intro查看官方文档。 Axios 返回的值是您要在其中解析返回的标头的“正文”以便可以使用它的响应。

    另一种获取浏览器会话ID(在浏览器关闭后被删除)是一个名为react-session-hook

    的模块

    在我看来,对于您正在尝试做的事情,添加另一个中继消息的服务器并不是最佳选择,因为这会添加另一个顺序连接,这会使事情花费两倍的时间。换句话说,这不是必需的。唯一的情况是访问 API 的密钥敏感意味着它们包含重要信息并且必须隐藏。

    【讨论】:

    • 非常感谢。我真的不希望客户端直接与后端通信,因为后端服务器处理付款,并且出于安全原因,我想尽可能地隐藏后端服务器。还有其他方法/想法吗?
    • @YourLocalCoder 我会为此更新它,但它更复杂,因为 react 不能这样做(你必须创建另一个服务器)。
    • @YourLocalCoder 这对于你想要做的事情来说有点不必要
    猜你喜欢
    • 2020-07-28
    • 2018-12-29
    • 2021-04-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多