在 express.js 中启用 CORS
由于 node.js 通常用于构建 API,因此如果你希望能够从不同的域请求 API,则适当的 CORS 设置可以节省生命。
在示例中,我们将为更广泛的配置进行设置(从任何域授权所有请求类型。
在初始化 express 之后的 server.js 中:
// Create express server
const app = express();
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
// authorized headers for preflight requests
// https://developer.mozilla.org/en-US/docs/Glossary/preflight_request
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
app.options('*', (req, res) => {
// allowed XHR methods
res.header('Access-Control-Allow-Methods', 'GET, PATCH, PUT, POST, DELETE, OPTIONS');
res.send();
});
});
通常,节点在生产服务器上的代理后面运行。因此,反向代理服务器(如 Apache 或 Nginx)将负责 CORS 配置。
为了方便地适应这种情况,可以仅在开发时启用 node.js CORS。
这可以通过检查 NODE_ENV
轻松完成:
const app = express();
if (process.env.NODE_ENV === 'development') {
// CORS settings
}