From 7c79ca787850e932a6ab3cca0b0b5a81a3d2d95b Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Tue, 4 Oct 2022 11:28:26 +0100 Subject: [PATCH] Ensure msg.req.headers is enumerable Fixes #3878 --- .../@node-red/nodes/core/network/21-httpin.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/nodes/core/network/21-httpin.js b/packages/node_modules/@node-red/nodes/core/network/21-httpin.js index 604df653f..22e83b411 100644 --- a/packages/node_modules/@node-red/nodes/core/network/21-httpin.js +++ b/packages/node_modules/@node-red/nodes/core/network/21-httpin.js @@ -46,7 +46,7 @@ module.exports = function(RED) { isText = true; } else if (parsedType.type !== "application") { isText = false; - } else if ((parsedType.subtype !== "octet-stream") + } else if ((parsedType.subtype !== "octet-stream") && (parsedType.subtype !== "cbor") && (parsedType.subtype !== "x-protobuf")) { checkUTF = true; @@ -200,6 +200,15 @@ module.exports = function(RED) { this.callback = function(req,res) { var msgid = RED.util.generateId(); res._msgid = msgid; + // Since Node 15, req.headers are lazily computed and the property + // marked as non-enumerable. + // That means it doesn't show up in the Debug sidebar. + // This redefines the property causing it to be evaluated *and* + // marked as enumerable again. + Object.defineProperty(req, 'headers', { + value: req.headers, + enumerable: true + }) if (node.method.match(/^(post|delete|put|options|patch)$/)) { node.send({_msgid:msgid,req:req,res:createResponseWrapper(node,res),payload:req.body}); } else if (node.method == "get") {