【问题标题】:Add headers to SockJS connection?将标头添加到 SockJS 连接?
【发布时间】:2017-01-04 03:18:15
【问题描述】:

我一直在使用 ZAP(一种自动安全扫描工具)对我的 Meteor 应用程序进行安全检查。 我已经能够解决很多安全问题,但我仍然收到部分应用程序的警告。比如下面的错误:

Web 浏览器 XSS 保护未启用,或被 上的“X-XSS-Protection”HTTP 响应标头的配置 网络服务器

这些警告与 HTTP 标头有关。

以下代码解决了所有普通页面的上述头部安全问题:

WebApp.rawConnectHandlers.use(function(req, res, next) {
  res.setHeader('X-XSS-Protection', '1; mode=block');
  next();
});

但在所有 /sockjs/info?cb=XXX 调用(例如 /sockjs/info?cb=4yiv7ncev4)中,一些使用 res.setHeader() 添加的标头不包括在内。如果我理解正确,这是服务器和客户端之间的调用,例如订阅或对 Meteor 方法的调用,并且使用的框架是 SockJS。

有没有办法在这些 websocket 连接中包含额外的标头?

非常感谢您的帮助!

【问题讨论】:

    标签: javascript meteor sockjs


    【解决方案1】:

    试试这个:

    const oldHttpServerListeners = WebApp.httpServer.listeners('request').slice(0);
    WebApp.httpServer.removeAllListeners('request');
    
    const newListener = function(request, response) {
      const args = arguments;
    
      response.setHeader('X-XSS-Protection', '1; mode=block');
    
      _.each(oldHttpServerListeners, function(oldListener) {
        oldListener.apply(WebApp.httpServer, args);
      });
    
    };
    
    WebApp.httpServer.addListener('request', newListener);
    

    【讨论】:

    • 非常感谢您的回复!那拯救了我的一天!它适用于我想要设置的所有标头,期望“Access-Control-Allow-Origin”标头始终具有 * 值,无论我设置哪个值。知道如何解决最后一个障碍吗? PS:很抱歉迟迟没有回复,前几天才看到你的留言。
    • 我认为标题是由sockjs 设置的。我不知道有什么方法可以覆盖它。
    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 2013-08-16
    • 2019-12-03
    • 2017-01-09
    • 2020-02-14
    • 1970-01-01
    • 2015-02-13
    • 2023-02-05
    相关资源
    最近更新 更多