从本地React前端测试Node.JS服务器

6ss1mwsb  于 2023-06-05  发布在  Node.js
关注(0)|答案(2)|浏览(236)

我创建了一个node. JSExpress服务器,它的作用是使用API将JSON发送到我的前端。我完成了后端并将其放在AWS服务器上。现在我只想在React前端工作。我在localhost:3000上启动react,并向AWS服务器发出请求,但我收到一个CORS错误,告诉我localhost:3000无权向此服务器发送请求。
Access to fetch at 'http://www.myawssever.fr:4000/api-url/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
我已经尝试了多种解决方案来授权localhost:3000,但我认为问题并不来自那里,因为对于服务器localhost:3000本身就是地址!你知道我如何通过向服务器(AWS)发送请求来从我的计算机(React在localhost:3000上)测试我的背部吗?

qncylg1j

qncylg1j1#

  • 以下是解决CORS错误并启用React前端和AWS服务器之间通信的组合步骤 *

Configure CORS on your AWS Server

首先,您需要配置服务器,以便在response中包含适当的CORS headers。您需要添加**“Access-Control-Allow-Origin”header,其值为“http://localhost:3000”**,以允许来自React应用的请求。

Exact method for configuring CORS

配置CORS的确切方法取决于您使用的服务器技术(例如Express,Apache,Nginx)。例如,如果您使用Express,则可以使用cors中间件。以下是如何使用Express配置CORS的示例:

const express = require('express');
const cors = require('cors');

const app = express();

app.use(cors({ origin: 'http://localhost:3000' }));

// Rest of your server code...

app.listen(4000, () => {
  console.log('Server running on port 4000');
});

Restart your AWS server

配置CORS后,重新启动AWS服务器以应用更改。

ekqde3dh

ekqde3dh2#

您的Express后台服务器似乎缺少**CORS(跨域资源共享)**配置。这可能是你的请求没有通过的原因。
首先在后端服务器上运行npm i cors
然后将以下内容添加到主index.js文件中:

var cors = require('cors')
...
app.use(
cors({
   /*domains that have the right to send/request data from this server*/ 
   origin: [
     'http://localhost:3000',
     'https://www.yourDeployedWebite.com',
   ],
 })
);

更多信息可以在here中找到。
如果这不起作用,您可能需要检查AWS中的配置或允许的域名中的任何拼写错误,例如未插入协议(http/https)。

相关问题