在同一台服务器上托管后端 API 的 SPA 构建时,是否应该避免使用 CORS?

在同一台服务器上托管后端 API 的 SPA 构建时,是否应该避免使用 CORS?

我偶然发现这个问题并且认为我的应用程序不需要 CORS,因为它托管在同一台服务器(树莓派)上。

然而,由于 CORS 是一种安全“特征“我也不确定避免这种情况是否是好的做法或最佳做法。(我很确定不是这样)

我的单页应用程序相当简单,处理 CORS 增加了一些复杂性,这对于这种规模的项目来说似乎是不必要的。

SPA 的编码方式为VueJS后端 API 是 Python Flask 服务器。VueJS 使用 Nginx 托管,对 Flask 服务器的 API 调用通过uWsgi。由于 flask 服务器与浏览器中的前端位于不同的域中,因此仅弹出 CORS。(从网络角度来看)

到目前为止我还没有找到办法避免CORS在我的场景中,但在研究这一点时,似乎内部的配置Nginx是解决这个问题的唯一方法。


从我的角度来看,没有必要实现 CORS。为了解释清楚,以下是应用程序所做事情的概念:

前端用作配置,其中设置了板类型和串行端口。此外,还对引脚名称和常用引脚进行了一些自定义。

例如:

板类型: 输入板 IM8

港口: SER1

引脚: 2

针1->输入 3 - 名称:“我是输入 3”

针2->输入 6 - 名称:“我是输入 6”

此配置完成于firepi.com/setup

然后,单击“可视化”链接时,firepi.com/visualization将根据设置生成一个界面。基本上,由于它是一个输入板,因此会创建 2 个按钮,分别对应于输入 3 和输入 6。

按下按钮时,阿贾克斯向 Flask 服务器发出请求,其中包含端口和引脚信息。这将在 Flask 服务器上执行代码,从而激活所连接板上的所述引脚。

flask 服务器托管在同一设备上,只是端口不同(5000):127.0.0.1:5000


所有这些中有两种类型的 API 请求:

  1. 是 /setup,主板信息在此发送到 Flask 服务器,因此 GPIO 已正确配置。需要进行配置是因为主板可以以各种方式接线。
  2. 是/visuals,您可以在此与已连接的板针进行交互。

由于前端和后端都在树莓派上,所以我看不出有什么理由不避免使用 CORS。

但是我确实理解为什么需要它,因为执行请求的浏览器与托管后端(位于 RPi 上)是不同的域。


我的问题:

我可以在我的场景中避免 CORS 吗?如果可以,我应该这么做吗?

我需要检查什么?全部?仅 Nginx 配置?仅 Flask 服务器?也许仅检查服务器端口的设置?

我尽量避免在这个问题中展示代码,因为我认为回答这个问题不需要代码。而且,如果不解释代码就展示所有代码,会有点复杂。

相关内容