From 6750be3ec95599b2d9423d91f13e06888e5b52e3 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 21 Jul 2021 14:09:15 +0100 Subject: [PATCH] HTTP Request node - ignore invalid cookies rather than fail request Fixes #3075 Keeps behaviour consistent with the request module --- .../nodes/core/network/21-httprequest.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js b/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js index 2a8712878..07efddc55 100644 --- a/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js +++ b/packages/node_modules/@node-red/nodes/core/network/21-httprequest.js @@ -121,6 +121,7 @@ module.exports = function(RED) { opts.responseType = 'buffer'; opts.maxRedirects = 21; opts.cookieJar = new CookieJar(); + opts.ignoreInvalidCookies = true; opts.forever = nodeHTTPPersistent; if (msg.requestTimeout !== undefined) { if (isNaN(msg.requestTimeout)) { @@ -181,7 +182,7 @@ module.exports = function(RED) { if (opts.headers.hasOwnProperty('cookie')) { var cookies = cookie.parse(opts.headers.cookie, {decode:String}); for (var name in cookies) { - opts.cookieJar.setCookie(cookie.serialize(name, cookies[name], {encode:String}), url); + opts.cookieJar.setCookie(cookie.serialize(name, cookies[name], {encode:String}), url, {ignoreError: true}); } delete opts.headers.cookie; } @@ -194,13 +195,13 @@ module.exports = function(RED) { } else if (typeof msg.cookies[name] === 'object') { if(msg.cookies[name].encode === false){ // If the encode option is false, the value is not encoded. - opts.cookieJar.setCookie(cookie.serialize(name, msg.cookies[name].value, {encode: String}), url); + opts.cookieJar.setCookie(cookie.serialize(name, msg.cookies[name].value, {encode: String}), url, {ignoreError: true}); } else { // The value is encoded by encodeURIComponent(). - opts.cookieJar.setCookie(cookie.serialize(name, msg.cookies[name].value), url); + opts.cookieJar.setCookie(cookie.serialize(name, msg.cookies[name].value), url, {ignoreError: true}); } } else { - opts.cookieJar.setCookie(cookie.serialize(name, msg.cookies[name]), url); + opts.cookieJar.setCookie(cookie.serialize(name, msg.cookies[name]), url, {ignoreError: true}); } } } @@ -220,11 +221,11 @@ module.exports = function(RED) { if (this.credentials.user) { // opts.username = this.credentials.user; cred = this.credentials.user - } + } if (this.credentials.password) { // opts.password = this.credentials.password; cred += ":" + this.credentials.password - } + } // build own basic auth header opts.headers.Authorization = "Basic " + Buffer.from(cred).toString("base64"); } else if (this.authType === "digest") { @@ -386,7 +387,7 @@ module.exports = function(RED) { http: new HttpProxyAgent(proxyOptions), https: new HttpsProxyAgent(proxyOptions) }; - + } else { node.warn("Bad proxy url: "+ prox); }