添加 headers 到 SockJS 连接?

Add headers to SockJS connection?

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

Web Browser XSS Protection is not enabled, or is disabled by the configuration of the 'X-XSS-Protection' HTTP response header on the web server

这些警告与 HTTP headers 有关。

以下代码解决了上述header所有正常页面的安全问题:

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

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

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

非常感谢您的帮助!

试试这个:

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