我在ECS上实施了一个全栈应用程序,启用了服务发现.该基础设施包括一个与MySQL RDS数据库对话的后端和一个向NodeJS后端发出请求的VueJS前端.当我向前台提出请求时,遇到了CORS问题.要重现该问题:
-
TerraForm初始化
-
TerraForm计划
-
应用TerraForm
-
当MySQL实例启动并运行时,使用
mysql -h <endpoint> -u admin -padmin123
连接到数据库并运行以下查询:如果存在客户,则丢弃数据库;
创建数据库客户; 使用客户; 如果存在图书,则丢弃表格;
创建表格手册( ID int不为空AUTO_INCREMENT, 名称varchar(255)非空, 价格int不为空, 主键(Id) );
在书中插入价值观(1,《基础经济学》,20),(2,《哈利波特》,15),(3,《物理学》,17); 从书籍中 Select *
-
TerraForm初始化
-
TerraForm计划
-
应用TerraForm
-
转到ecs->;Rolling-ls-cluster->;Tasks->;在浏览器中输入公网IP,然后点击按钮.
-
判断浏览器控制台(右键单击-&>;判断-&>控制台),您将看到以下错误.
Access to XMLHttpRequest at 'api.example.terraform.com:3300/mysql' from origin 'http://<public-IP>' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.
GET api.example.terraform.com:3300/mysql net::ERR_FAILED
Uncaught (in promise) rt {message: 'Network Error', name: 'AxiosError', code: 'ERR_NETWORK', config: {…}, request: XMLHttpRequest, …}
但是,如果我创建一个EC2实例并使用
curl api.example.terraform.com:3300/mysql
,我得到了回复.
这是我的NodeJS后端:https://github.com/FIAF0624/backend/blob/main/server.js,我还允许CORS显式地添加头部.安全组允许来自任何地方的所有流量.不知道为什么我会遇到这个CORS问题.这个应用程序在本地运行得很好.我不确定问题到底出在哪里.任何帮助都将不胜感激.
这是前端回购:https://github.com/FIAF0624/frontend/blob/a2e89010d3dfaa75caecfb8d656723abe2ff3456/src/components/Dashboard.vue#L29,我正在使用Axios提出请求.