我使用 Helmet 和 Express 从服务器端设置相当多的安全 HTTP 标头。当在 Node.js 应用程序顶部渲染客户端页面时,使用以下命令,这做得很好:
\n\nvar app = express();\napp.use(helmet());\n..\nres.render("pages/index", data);\n
Run 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\n
Run 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}));\n
Run 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) 我有以下数组:
let arr = [
{"id": 123, "lastUpdate": 1543229793},
{"id": 456, "lastUpdate": 1545269320},
{"id": 123, "lastUpdate": 1552184795}
]
Run Code Online (Sandbox Code Playgroud)
我需要根据相同的 ID 过滤数组,但还要检查“lastUpdate”时间戳并仅保留较新的条目。结果应该是:
[
{"id": 456, "lastUpdate": 1545269320},
{"id": 123, "lastUpdate": 1552184795}
]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
arr = arr.filter((e, index, self) =>
index === self.findIndex((t) => (
t.id === intent.id && t.lastUpdate > e.lastUpdate
))
)
Run Code Online (Sandbox Code Playgroud)
但是,这为我过滤了所有内容,结果数组为空。我认为上面的最后一部分有问题&& t.lastUpdate > e.lastUpdate
。
非常感谢您的任何提示!