【问题标题】:How to send HTTP headers to static directory in Connect (Node.js)如何将 HTTP 标头发送到 Connect (Node.js) 中的静态目录
【发布时间】:2013-09-14 09:00:34
【问题描述】:

我有一个为目录提供服务的简单连接服务器。我想向它所服务的所有文件发送一个自定义 HTTP 标头。这是我现在的代码:

 var connect = require('connect');

 var app = connect()
     .use(connect.static('public'))
     .listen(3000);

如何向公共目录中的每个页面(甚至服务器提供的每个页面)发送标头?

(出于好奇,我正在尝试将“x-frame-options”发送到每个页面)

【问题讨论】:

    标签: javascript node.js express http-headers connect


    【解决方案1】:

    您有两个选择:编写自己的中间件来发送标头,或使用库。
    Helmet 是一个实现多个安全标头的中间件,包括 x-frame。 您的代码如下所示:

     var app = connect()
         .use(connect.static('public'))
         .use(helmet.xframe('allow-from', 'http://example.com'))
         .listen(3000);
    

    要手动添加标题,无需任何额外的库,您可以通过编写自己的中间件来执行类似的操作:

    function addMyHeaders(req, res, next){
      res.setHeader("X-My-custom-header", ":{D");
      next();
    }
    
    var app = connect()
         .use(addMyHeaders)
         .use(connect.static('public'))
         .listen(3000);
    

    【讨论】:

    • 太棒了!感谢您为我指明正确的方向。我一直收到这个错误——gist.github.com/streetlight/6512105——你知道为什么会发生这种情况吗? (我会选择你的第二个选项,但都尝试过)
    • 好的,我通过使用 .setHeader 而不是 .header 修复了该错误,但仍然无法使其完全正常工作——我认为只是添加了一些文件。将保持这个线程是最新的!再次感谢
    • 我的错,.header 是 express 方法,使用 connect 时应该使用 .setHeader。另一个错误是中间件的使用顺序。我正在编辑答案以反映这一点!
    • 听起来不错!实际上我刚刚发现自己要更新帖子。再次感谢您的帮助!
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多