我正在尝试使用 node.js 和 javascript 将我的 cors origins 值设置为受信任的子域列表
I'm trying to set my cors origins value to a list of trusted subdomains, using node.js and javascript
我的设置出了问题。我想知道这是否是我在 .env 文件中定义允许来源列表的方式。
在我的 .env 文件中,我有一个受信任的子域列表:
// .env file
ALLOWED_ORIGINS=http://localhost:3001, http://localhost:3000, https://wwww.site1.com, https://www.site2.com
在我的 server.ts 文件中,我试图将 origins 设置为我的 .env 文件中的值,请参阅行 origins: allowedOrigins。之前设置为 origins: ['*']
// server.ts file
export default createServer = (container) => {
const env = process.env.NODE_ENV
const allowedOrigins = process.env.ALLOWED_ORIGINS || ''
const cors = Cors({
origins: allowedOrigins,
allowedHeaders: [
'access-control-allow-origin',
'authorization',
'Pragma',
'contact',
],
exposeHeaders: []
})
}
我检查了 cors npm page,origins
选项 不 接受逗号分隔字符串中的多个来源。它接受 array 代替。
您可以用“,”分割您的环境变量以获得所需的格式。在下面的代码中,我添加了 .trim()
方法来减少字符串中不必要的空格。
// server.ts file
export default createServer = (container) => {
const env = process.env.NODE_ENV
const allowedOrigins = process.env.ALLOWED_ORIGINS || ''
const allowedOriginsArray = allowedOrigins.split(",").map(item => item.trim());
const cors = Cors({
origins: allowedOriginsArray,
allowedHeaders: [
'access-control-allow-origin',
'authorization',
'Pragma',
'contact',
],
exposeHeaders: []
})
}
你只需要用逗号分隔它们
const allowedOrigins = process.env.ALLOWED_ORIGINS.split(",") || '';
此外,
我相信它只是 origin 而不是 origins
对于以下内容,allowedOrigins 必须是一个数组。所以你只需映射 return 一个数组
const allowedOrigins = process.env.ALLOWED_ORIGINS.split(',').map(origin=>origin);
const cors = Cors({
origin: (origin, callback) => {
allowedOrigins.includes(origin) ? callback(null, true) : callback(new Error('Not allowed by CORS'))
},
allowedHeaders: [
'access-control-allow-origin',
'authorization',
'Pragma',
'contact',
],
exposeHeaders: []
})
}
我的设置出了问题。我想知道这是否是我在 .env 文件中定义允许来源列表的方式。
在我的 .env 文件中,我有一个受信任的子域列表:
// .env file
ALLOWED_ORIGINS=http://localhost:3001, http://localhost:3000, https://wwww.site1.com, https://www.site2.com
在我的 server.ts 文件中,我试图将 origins 设置为我的 .env 文件中的值,请参阅行 origins: allowedOrigins。之前设置为 origins: ['*']
// server.ts file
export default createServer = (container) => {
const env = process.env.NODE_ENV
const allowedOrigins = process.env.ALLOWED_ORIGINS || ''
const cors = Cors({
origins: allowedOrigins,
allowedHeaders: [
'access-control-allow-origin',
'authorization',
'Pragma',
'contact',
],
exposeHeaders: []
})
}
我检查了 cors npm page,origins
选项 不 接受逗号分隔字符串中的多个来源。它接受 array 代替。
您可以用“,”分割您的环境变量以获得所需的格式。在下面的代码中,我添加了 .trim()
方法来减少字符串中不必要的空格。
// server.ts file
export default createServer = (container) => {
const env = process.env.NODE_ENV
const allowedOrigins = process.env.ALLOWED_ORIGINS || ''
const allowedOriginsArray = allowedOrigins.split(",").map(item => item.trim());
const cors = Cors({
origins: allowedOriginsArray,
allowedHeaders: [
'access-control-allow-origin',
'authorization',
'Pragma',
'contact',
],
exposeHeaders: []
})
}
你只需要用逗号分隔它们
const allowedOrigins = process.env.ALLOWED_ORIGINS.split(",") || '';
此外,
我相信它只是 origin 而不是 origins
对于以下内容,allowedOrigins 必须是一个数组。所以你只需映射 return 一个数组
const allowedOrigins = process.env.ALLOWED_ORIGINS.split(',').map(origin=>origin);
const cors = Cors({
origin: (origin, callback) => {
allowedOrigins.includes(origin) ? callback(null, true) : callback(new Error('Not allowed by CORS'))
},
allowedHeaders: [
'access-control-allow-origin',
'authorization',
'Pragma',
'contact',
],
exposeHeaders: []
})
}