【问题标题】:Cannot set headers for Express.js app (CORS)无法为 Express.js 应用程序 (CORS) 设置标头
【发布时间】:2026-01-17 16:25:02
【问题描述】:

无论我尝试使用什么来设置标题,它都无法正常工作。

服务器端接受前端的POST请求后,需要像这样发送响应头。

server.js

app.post('/register', (req, res) => {
   res.set({
       'Content-Type': 'application/json',
       'Access-Control-Allow-Origin': '*'
   });
   res.send('string');
   res.end();
}

res.set() 函数不是我尝试使用的唯一函数。

我试过了:

res.writeHead(201, {'Access-Control-Allow-Origin': '*'}) - 不起作用

res.setHeader('Access-Control-Allow-Origin', '*') - 不

res.headers() - 也不起作用

这里说它是这样的:How can I set response header on express.js assets 但答案对我不起作用。

无论我尝试了什么,服务器都不会响应启用 CORS 的标头,我需要该标头属性。我做错了什么?

【问题讨论】:

  • 你用什么测试资源?使用浏览器时请记住,在跨域 POST 请求中,浏览器将首先发送需要正确处理的预检请求。

标签: node.js express cors


【解决方案1】:

尝试使用 cors 模块:https://www.npmjs.com/package/cors

var cors = require('cors')

...

app.use(cors())

【讨论】:

  • 这就是解决方案。我正在尝试使用越来越少的模块,因为我想编写普通的 Node.js 应用程序,但是 Express 中的标头(当涉及标头时)根本不想像我想象的那样工作。谢谢,现在一切正常。谢谢。
【解决方案2】:

Access-Control-Expose-Headers 响应标头指示哪些标头可以通过列出其名称作为响应的一部分公开。

您可以在此处阅读更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

res.set('Access-Control-Expose-Headers', 'Access-Control-Allow-Origin, <any-other-custom-header>, ...');

【讨论】: