【问题标题】:React needs web server? How do the web application server and react communicate? [closed]React 需要网络服务器吗? Web 应用服务器和 React 是如何通信的? [关闭]
【发布时间】:2021-04-22 05:47:47
【问题描述】:

我是一名自学网络开发的学生。 我正在开发一个购物中心网站作为我的个人项目,当我尝试制作登录页面时遇到了一些基本问题。

首先,我将在开始时向您介绍我的项目的主要概念,以便您更容易理解我的问题。

我最初的概念和想法如下:

  • 数据库(MySQL)
    我需要一些数据显示在网站上。所以我决定在 Kaggle 上使用“时尚产品图像数据集”。注册的用户也将被存储。 我只是假设有我需要的一切来制作网站。

  • Web 应用服务器(API 服务器)
    我认为这是一种桥梁,可以使浏览器上的javascript在第一次加载页面或需要用户更改资源时获得一些资源,一种产品图像和价格,或者代码。

  • Web 服务器(内置 React)
    我使用“create-react-app”制作了 React 应用程序,所以我实际上不需要考虑 Web 服务器。我所做的唯一一件事就是构建一些使用 React 库显示 UI 的组件。

FRONT-END                                      BACK-END
 ----------          ----------------------------------------------------------------
|  CLIENT  | < --- > |   REACT   | < --- > |  API-SERVER  | < --- > |  DATABASE  |
|   REACT  |         |(WEB-SERVER)| 

当用户请求我的页面时,React(内置服务器)会回复它。 然后,用户将获得 SPA(客户端)。

SPA 没有任何数据,它将从 API 服务器获取数据(因为 .js 文件中插入了获取代码)。 然后,api服务器内部的查询将从数据库中获取数据。 然后,API 服务器将数据提供给 SPA。

在我开始考虑安全性之前,一切都很顺利。如您所见,当我们访问其他网站时,他们使用的是 https 而不是 http。所以我想使用 https,因为保护个人数据免受坏人的侵害非常重要。当我考虑我的想法时,没有任何地方可以放置将 http 更改为 https 的代码。

另外,我理解 React 只是一个库,就像 reactjs.org 所说的那样。所以我认为我能够使用内置 Web 服务器的原因是因为该应用程序是由 'create-react-app' 制作的。

最后,这里是主要问题。 据我所知,https 逻辑应该在网络服务器中。我的意思是处理客户端请求的服务器。

  1. 如果 react is a library 是真的,我是否必须构建一个 Web 服务器? (我认为用 Node.js 或其他语言构建 Web 服务器是正确的方法,因为库只是一个库..!)

  2. 如果我不需要搭建网络服务器,我应该把逻辑放在哪里?

  3. 假设我已经完全准备好使用 https(我通过 Node.js 制作了一个 Web 服务器,并获得了一个使用 TLS 的 CA),然后,客户端和 Web 服务器能够安全地通信。但是,所有调用 API 的代码都写在 .js 文件中。 这些文件现在是客户端的浏览器。这意味着客户端和API服务器没有安全连接,因为API服务器和Web服务器有不同的域或端口。

也许是问题3的总结:
3.1。当我在 google 上搜索时,我了解到 Web 应用程序服务器是处理 Web 服务器无法服务的请求。但是,在 SPA 中,请求来自客户端。是这样吗?

3.1.1。如果来自客户端的问题,如何证明客户端和 Web 应用服务器之间的通信是安全的?因为 Web 服务器和 Web 应用程序服务器的域或端口不同!

【问题讨论】:

  • 嗨金鱼。您的问题吸引了很多反对票,这通常表明存在质量问题。当前的问题包含太多的背景和推测,然后引发了许多问题——其中大多数已经有了高质量的答案。我相信你的思路其实很值得称道,但意识流在问答形式中是行不通的。这个问题很可能最终会被审核删除,所以我建议你在前面,自己删除它,并在转发之前阅读How do I ask a good question?
  • 很抱歉,这是我第一次发帖,我的英语不太好。这就是为什么有很多问题,再次抱歉。保存昆汀的答案后,我会立即删除它
  • 我自己无法删除它,所以我标记了这是太多基于选项的问题。请删除它...
  • 很可能被接受的答案阻止了。您的替代方法是将其重写为简洁明了的问题:)

标签: reactjs web https frontend was


【解决方案1】:

没有任何地方可以放置将 http 更改为 https 的代码。

您有代码向 URL 发出 HTTP 请求以从 API 获取数据。该代码必须说明 URL 是什么。您可以在那里指定 URL 方案。

所以我认为我能够使用内置 Web 服务器的原因是因为该应用程序是由“create-react-app”制作的。

React 是一个 JS 库。它没有内置的网络服务器。 create-react-app 安装 React,生成一些默认项目文件,并包含大量工具

Web 服务器仅供开发使用。它包含对开发有用但对生产效率低下的功能,例如热重载。

它还有一个build script,用于输出静态文件以部署在您的生产网络服务器上。

您的生产服务器可以支持 HTTPS。它可能与托管您的 API 的服务器相同,也可能不同。

【讨论】:

  • The web server is intended for development use only 意思是如果我要制作一个网页供公众使用,我需要另外制作一个Web服务器吗?不是默认的? Your production server can support HTTPS. 为了使我的 web 服务器支持 HTTPS,我必须在 web 服务器中使用一种 https 模块。喜欢const https = require('https');
  • 您不必编写自己的服务器。一个现成的就很好了。例如 Nginx,甚至是为静态托管配置的 Amazon S3 存储桶。
  • 我仍然很好奇,如果我想将用户数据保存在数据库中,例如登录,id 和密码将转到服务器。在这种情况下,服务器将是 Web 应用程序服务器,对吗?数据将使用http 协议传递。当 Web 服务器和 API 服务器有不同的域时,这些数据是如何加密的?
  • "数据将使用 http 协议传递" — 仅当您选择使用 HTTP 而不是 HTTPS 时……在这种情况下,它不会被加密(除非您使用自己的加密布局……不应该(只使用 HTTPS))。
  • 哦,是的!这才是重点!。我想使用 HTTPS。当我通过TLS(HTTPS)搜索HTTP的基本过程时,客户端和服务器必须共享一个公钥。啊,Web服务器和Web应用程序服务器具有相同的密钥...??我很抱歉
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2016-03-20
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多