You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Express Node.js服务中为响应添加额外的自定义头部?

Express HTTPS服务添加自定义响应头实现方案

在Express中添加响应头的逻辑和使用HTTP/HTTPS协议启动服务无关,只要按如下规则配置即可生效:

方案1:全局自定义中间件(全量响应生效)

在所有路由注册逻辑之前添加全局中间件,所有接口返回的响应都会自动携带设置的头:

// 注意:必须放在app.use(路由模块)、app.get/post等路由定义代码之前
app.use((req, res, next) => {
  // 设置X-Frame-Options,可选值:DENY(禁止所有页面嵌入) / SAMEORIGIN(仅同域名可嵌入) / ALLOW-FROM 指定域名
  res.setHeader('X-Frame-Options', 'SAMEORIGIN');
  // 可在此处添加任意其他自定义响应头
  res.setHeader('X-Content-Type-Options', 'nosniff');
  next();
});

方案2:单个路由单独配置

如果不需要全局生效,仅给指定接口添加响应头,直接在路由处理逻辑中设置即可:

app.get('/api/test', (req, res) => {
  res.setHeader('X-Frame-Options', 'DENY');
  res.json({ code: 0, msg: 'success' });
});

方案3:使用helmet一键配置安全响应头

如果需要批量添加常见安全响应头,可使用Express生态的专用中间件helmet,内置X-Frame-Options等十几种安全头的默认配置:

  1. 安装依赖
    npm install helmet
  2. 注册中间件
const helmet = require('helmet');
// 放在所有路由逻辑之前注册
app.use(helmet());
// 如需自定义X-Frame-Options规则,可单独配置frameguard
app.use(helmet.frameguard({ action: 'deny' }));

效果验证

服务启动后执行curl命令即可验证响应头是否生效:
curl -I https://localhost:你的服务端口
返回结果中存在X-Frame-Options对应配置值即为配置成功。

常见失效原因排查

  • 响应头设置的中间件注册顺序晚于路由注册,请求已被路由处理返回,未走到头设置逻辑
  • 其他业务代码存在同名响应头覆盖逻辑
  • 如服务前部署了Nginx等反向代理,需检查代理层是否存在头覆盖配置

内容的提问来源于stack exchange,提问作者Florin Gheorghe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:06:03