vue.js - Vue.js + Net Core 3.1 - 重定向 API 调用
问题描述
我正在处理的项目有问题。我有一个 Vue 客户端,它对我的后端进行 API 调用,它是用 .NET Core 3.1 编写的。这两个应用程序都部署在不同的服务器上。
现在的问题是我的后端服务器不允许我直接从浏览器进行 API 调用。所以我必须在客户端服务器上进行某种“重定向”才能访问我的 API。
例如:
如果我调用 backend_server/api/values 我会收到一个错误(防火墙)。
我认为我应该制作第二个 API 之类的东西,但我不确定如何处理这个问题。有人有这方面的经验吗?欢迎任何帮助!
亲切的问候
解决方案
您可以在这里有多种选择
删除防火墙规则 - 这将允许您的 API 被浏览器访问。如果防火墙不是由您管理,则无法执行此操作
在防火墙中添加 IP 或端口例外规则 - 您可以在防火墙上允许特定端口或 IP,而不是停用服务器上的整个入站规则。再次,如果您可以控制防火墙
创建代理 API - 另一种方法是您可以创建一个中间件 API 来转发您的请求并充当代理。这将足以满足性能、资源、时间和妥协的安全性。我建议不要这样做,但在 .NET Core 中很容易实现
指定 CORS 策略 - 如果您的 Vue.js 和 API 来自同源 (IP),您可以在服务器中配置 CORS,这将限制对 API 的访问仅来自同源。这意味着只有www.google.com可以访问 GoogleAPI,同样。这将保护 API 免受其他来源的影响
通过 VPN 建立隧道 - 如果需要考虑安全性,请使用 VPN 服务来隧道化您的 API 请求。这对于使用您的 Web 服务的每个客户来说都是不可能的。
如果可能,最好的方法是在服务器上为您的应用程序打开特定规则。尽管可以完成,但在两者之间编写代理会有很多缺点。
推荐阅读
- kubernetes - Kubernetes containerd - 无法从私有注册表中提取图像
- jquery - (index):49 Uncaught SyntaxError: missing ) 在参数列表之后
- java - 如何将此 for 循环转换为正确的 while 循环?
- c# - 无法从 GUIGridView 读取所有行。34 行后变为空白
- python - 是否可以将使用 plt.show() 获得的窗口保存为可导航格式而不是简单的图像?
- swiftui - SwiftUI 中途恢复导航流程
- flurry - Flurry Analytics 在中国的访问
- python - 如何在 Kubernetes 的单个 pod 中为单个容器提供唯一的主机名?
- eclipse - Eclipse 重新启动时删除了 Eclipse 首选项
- selenium-webdriver - 如何使用 JavaScript 在 Selenium WebDriver 中选择和验证所选项目