我正在try 允许CORS进入 node .但问题是,如果设置了Access-Control-Allow-Credentials,我不能将*设置为Access-Control-Allow-Origin.

规范还说我不能为Access-Control-Allow-Origin做数组或逗号分隔的值,建议的方法是做类似于这个Access-Control-Allow-Origin Multiple Origin Domains?的事情

但我在node中似乎不能这样做.js

["http://example.com:9001", "http://example.com:5001"].map(domain => {
  res.setHeader("Access-Control-Allow-Origin", domain);
});
res.header("Access-Control-Allow-Credentials", true);

这里的问题是它被数组中的最后一个值覆盖,所以头将被设置为res.setHeader("Access-Control-Allow-Origin", "http://example.com:5001");

来自客户端浏览器的错误:

XMLHttpRequest无法加载http://example.com:9090/api/sync.这个

推荐答案

下面是我在express应用程序中使用的允许多个来源的内容

app.use((req, res, next) => {
  const allowedOrigins = ['http://127.0.0.1:8020', 'http://localhost:8020', 'http://127.0.0.1:9000', 'http://localhost:9000'];
  const origin = req.headers.origin;
  if (allowedOrigins.includes(origin)) {
       res.setHeader('Access-Control-Allow-Origin', origin);
  }
  //res.header('Access-Control-Allow-Origin', 'http://127.0.0.1:8020');
  res.header('Access-Control-Allow-Methods', 'GET, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  res.header('Access-Control-Allow-Credentials', true);
  return next();
});

Node.js相关问答推荐

使用prisma迁移到SQL失败

使用NodeJS在S3上传文件时的格式问题

在我的Next.js应用程序中没有正确设置Process.env.NODE_ENV

使用NodeJS输出检索Base64图像的网络报废

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

Firebase-admin筛选器.或只考虑第一个WHERE子句

FindOne()返回所有值,而不是一个值

try 使用Express和连接池将数据插入MySQL数据库时出现拒绝访问错误

MongooseError[MissingSchemaError]:尚未为模型注册架构

Nest Js - 在 multer 拦截器中如何设置最大文件上传大小并进行可选文件上传

为什么 Cors 在 NodeJS 中不起作用

在对象数组中的数组中嵌套 $lookup - Mongodb

Indexeddb 获取所有不同于特定值的记录

如何防止 Chrome 通过 Selenium 崩溃?

如何在没有云功能的情况下使用 Google PubSub

postman 发送请求……永远

突然 React 无法执行create-react-app命令.为什么会发生这种情况,我该如何解决?

如何promise AWS JavaScript 开发工具包?

使用 pg-promise 进行多行插入

大型项目的 NodeJS vs Play 框架