我是反应开发的初学者,我对何时应该使用代理或cors使前端与后端通信感到困惑。还是我需要同时使用两者?比如用于开发的代理和用于生产的 CORS?
当您希望使后端服务器可供任何请求使用 CORS 时,CORS 与后端完全相关。
例:
const app=require('express');
const cors=require('cors');
app.use(cors())// server will respond to any domain
大多数情况下,当您希望能够连接到 webpack 开发服务器未托管但在发布时将由您的服务器托管的 api 时,您将使用代理。一个例子可能比任何事情都更能说明这一点。
开发时,您有以下方案
API 服务器 -在本地主机运行:4567 Webpack 开发服务器 - 在本地主机运行:8080
您的应用程序.js将像这样向 API 服务器发出请求
$.ajax({
url: '/api/getOwnedGames',
...
});
如果没有代理,这实际上会向localhost:8080/api/getOwnedGames发出请求(因为您是从webpack开发服务器浏览的(。但是,如果您像这样设置代理...
proxy: {
'/api/*': {
target: 'http://localhost:4567'
}
}
API 请求将被重写为 http://localhost:4567/api/getOwnedGames。
如果您没有托管自己的 API,则可能不需要代理。