我使用 Helmet 和 Express 从服务器端设置相当多的安全 HTTP 标头。当在 Node.js 应用程序顶部渲染客户端页面时,使用以下命令,这做得很好:
\n\nvar app = express();\napp.use(helmet());\n..\nres.render("pages/index", data);\nRun Code Online (Sandbox Code Playgroud)\n\n索引页上的所有资源都将具有 Helmet 标题。不幸的是,socket.io 有自己的标头管理。因此,/socket.io/ 之后的任何内容都将具有不安全/其自己的标头。例如这里:
\n\n<https_path>/socket.io/socket.io.js\n<https_path>/socket.io/?EIO=3&transport=polling&t=Lj4CFnj&sid=ILskOFWbHUaU6grTAAAA\nRun Code Online (Sandbox Code Playgroud)\n\n因此,我想手动为所有 socket.io 项目设置自定义标头。
\n\n这就是我需要 socket.io 的方式(仅摘录):
\n\n/src/app.js
\n\nvar express = require("express");\nvar sio = require("socket.io");\nvar app = express();\nvar io = require("./../lib/io.js").initialize(app.listen(REST_PORT, () => {\n logger.info("Application ready on port " + REST_PORT + " . Environment: " + NODE_ENV);\n}));\nRun Code Online (Sandbox Code Playgroud)\n\n/lib/io.js
\n\nexports = module.exports = {};\nvar sio = require("socket.io");\nexports.initialize = function(server) {\n var options …Run Code Online (Sandbox Code Playgroud)