NodeJS 如何在CRA dev服务器中设置API代理?

1tu0hz3e  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(190)

bounty还有7天到期。此问题的答案有资格获得+50声望奖励。Cardinal System希望引起更多关注这个问题。

我在开发React应用程序时遇到了问题。在开发时,我的应用程序运行在localhost:3000上,我的后端服务器(托管/api端点)运行在localhost:80上。前端调用localhost:80/api,但由于同源策略(或缺少CORS)而失败。我尝试用下面的代码行解决在package.json中设置代理的问题:

"proxy": "http://localhost:80"

Create-React-App docs说,使用代理“告诉开发服务器将任何未知的请求代理到您的API服务器......”现在,无论出于何种原因,React不是将/api的请求代理到localhost:80,而是向localhost:80发送 redirect(HTTP 301)信号。这导致CORS错误仍然发生。
从这个网络流量的屏幕截图中可以看到,前端正在向我的/api端点发出请求,后端正在发出重定向信号:

React文档特别指出,在开发中使用代理“避免了CORS问题和错误消息”,所以我希望我有正确的解决方案,但我设置的方式是错误的。
有没有办法在不使用Chrome扩展程序的情况下防止这些CORS问题?

wvt8vs2t

wvt8vs2t1#

处理React.js中的CORS(跨域资源共享)问题,您可以在本地主机开发和生产期间在后端Node.js应用程序中解决。使用“cors”包,我们可以解决这个问题

npm install cors

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

const app = express();

// Enable CORS for localhost development
app.use(cors({
     origin: 'http://localhost:3000' // Replace with your production link. Just 
                                       // now for development purpose.
}));

// Your server configuration and routes

相关问题