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

SailsJS中ClickJacking配置在curl根路径请求时缺失X-Frame-Options问题

问题分析

你的问题核心在于:Sails默认的X-Frame-Options安全中间件仅作用于最终返回2xx状态码的路由响应,而根路径/返回的是3xx重定向响应,没有经过该中间件的处理,因此缺失对应的响应头。

解决方案

1. 自定义全局中间件统一添加响应头

在Sails中通过自定义HTTP中间件,确保所有响应(包括重定向的3xx响应)都带上X-Frame-Options头:

  • 打开config/http.js文件
  • 在middleware对象中添加自定义中间件:
    middleware: {
      // 其他默认中间件...
      addFrameOptionsHeader: function(req, res, next) {
        // 这里使用你之前配置的X-Frame-Options值,比如 DENY 或 SAMEORIGIN
        res.setHeader('X-Frame-Options', 'DENY');
        next();
      }
    },
    
  • 在middleware.order数组中,将addFrameOptionsHeader放到靠前的位置(比如在cookieParser之后、session之前),确保它在所有路由处理和重定向之前执行:
    order: [
      'addFrameOptionsHeader',
      'cookieParser',
      'session',
      // 其他中间件...
    ]
    

2. 验证效果

执行以下命令测试根路径的响应头:

curl -v https://{SiteURL}/

此时应该能在3xx重定向的响应头中看到X-Frame-Options字段;同时再次测试默认状态路径:

curl -v https://{SiteURL}/{DefaultState}

确认该路径的响应头依然保留正确的X-Frame-Options配置。

3. 补充说明

Sails官方文档中的ClickJacking方案,默认是绑定在视图渲染或静态资源返回的流程中,仅处理最终的页面响应。而路由重定向属于早期的响应输出,不会触发后续的视图处理中间件,因此需要通过全局中间件来覆盖所有场景。

内容的提问来源于stack exchange,提问作者Pathik Parikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:05:00