将标头添加到SockJS连接?

时间:2017-01-04 03:18:16

标签: javascript meteor sockjs

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

  

Web浏览器XSS Protection未启用,或已被禁用   ' 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连接中包含额外的标头?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个:

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);