From 40f482055cdc6901f5efc830b72dd6ba2de9ce23 Mon Sep 17 00:00:00 2001 From: Dmitry Blyus Date: Mon, 2 Oct 2017 19:19:48 +0300 Subject: [PATCH 1/3] Fixed parsing of comma separated multiple cookies in one header field. https://tools.ietf.org/html/rfc2965 --- cookiejar.js | 2 +- tests/test.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cookiejar.js b/cookiejar.js index 2afe2e7..3d4e8d1 100644 --- a/cookiejar.js +++ b/cookiejar.js @@ -62,7 +62,7 @@ return this.name + "=" + this.value; }; - var cookie_str_splitter = /[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g; + var cookie_str_splitter = /[,](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g; Cookie.prototype.parse = function parse(str, request_domain, request_path) { if (this instanceof Cookie) { var parts = str.split(";").filter(function (value) { diff --git a/tests/test.js b/tests/test.js index d4ea27f..7245789 100644 --- a/tests/test.js +++ b/tests/test.js @@ -26,8 +26,8 @@ assert.equal(cookie.domain, ".test.com"); var test_jar = CookieJar(); test_jar.setCookies( "a=1;domain=.test.com;path=/" - +":b=2;domain=test.com;path=/" - +":c=3;domain=test.com;path=/;expires=January 1, 1970"); + +",b=2;domain=test.com;path=/" + +",c=3;domain=test.com;path=/;expires=January 1, 1970"); var cookies=test_jar.getCookies(CookieAccessInfo("test.com","/")) assert.equal(cookies.length, 2, "Expires on setCookies fail\n" + cookies.toString()); assert.equal(cookies.toValueString(), 'a=1;b=2', "Cannot get value string of multiple cookies"); From 3a41e7e08866c49dbc9f5f73657f6ec3bc4e0192 Mon Sep 17 00:00:00 2001 From: Dmitry Blyus Date: Tue, 3 Oct 2017 14:41:34 +0300 Subject: [PATCH 2/3] Moved the regex closer to where it's actually used. --- cookiejar.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cookiejar.js b/cookiejar.js index 3d4e8d1..1d60928 100644 --- a/cookiejar.js +++ b/cookiejar.js @@ -62,7 +62,6 @@ return this.name + "=" + this.value; }; - var cookie_str_splitter = /[,](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g; Cookie.prototype.parse = function parse(str, request_domain, request_path) { if (this instanceof Cookie) { var parts = str.split(";").filter(function (value) { @@ -247,7 +246,7 @@ CookieJar.prototype.setCookies = function setCookies(cookies, request_domain, request_path) { cookies = Array.isArray(cookies) ? cookies : - cookies.split(cookie_str_splitter); + cookies.split(/[,](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g); var successful = [], i, cookie; From 0a2fb985ea36e72653745baddaac10b958798641 Mon Sep 17 00:00:00 2001 From: Dmitry Blyus Date: Tue, 3 Oct 2017 14:49:30 +0300 Subject: [PATCH 3/3] Fixed CookiesJar toString --- cookiejar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookiejar.js b/cookiejar.js index 1d60928..3937e37 100644 --- a/cookiejar.js +++ b/cookiejar.js @@ -226,7 +226,7 @@ } } matches.toString = function toString() { - return matches.join(":"); + return matches.join(","); }; matches.toValueString = function toValueString() { return matches.map(function (c) {