javascript - cors 中间件与发送标头相同吗?
问题描述
对于节点项目,我使用的是 cors。有两种选择,一种是cors 中间件,另一种是发送标头,例如:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", CLIENT_ORIGIN);
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
res.header("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE");
res.header("Access-Control-Allow-Credentials", true);
if (req.method === "OPTIONS") {
return res.sendStatus(204);
}
next();
});
两者使用有区别吗?一个人用另一个吗?我需要两者吗?
解决方案
我会使用您列出的 npm cors 包来实现您的目标。当你使用这个 cors 库时,你不需要手动设置头文件,除非你想设置 cors 包没有设置的额外头文件。
我已经将此包专门用于白名单功能,您可以在其中包含您希望允许向您的 API 发出请求的域列表(https://www.npmjs.com/package/cors#configuring-cors-w -动态原点)。
推荐阅读
- python - 绘图图例显示未知项目/相同的图例项目以不同的线条显示两次
- regex - Apache 2.4 如何使用 SetEnvIf 从日志中排除某些 GET 请求
- python - 绘制子图 - Python
- arrays - 从另一个具有索引的数组更改数组字符串值
- javascript - 如何将自定义 SVG 形状添加到使用 MathJax 生成的方程中?
- javascript - 具有“经典”功能的闭包计数器不起作用,但使用 IIFE 可以。为什么?
- javascript - 无法使用 Express 和 Node Js 打开从服务器下载的 pdf 文件
- go - 使用 req.Body 中的值更新内存中的对象
- javascript - WordPress 将元素注入 wp.element.createElement
- python - Ansible 将 int 转换为 float