diff --git a/src/node/utils/tar.json b/src/node/utils/tar.json
index 7f1fe0135..e6caa3e67 100644
--- a/src/node/utils/tar.json
+++ b/src/node/utils/tar.json
@@ -2,7 +2,7 @@
"pad.js": [
"pad.js"
, "pad_utils.js"
- , "$js-cookie/src/js.cookie.js"
+ , "$js-cookie/dist/js.cookie.js"
, "security.js"
, "$security.js"
, "vendors/browser.js"
@@ -21,7 +21,7 @@
, "pad_connectionstatus.js"
, "chat.js"
, "vendors/gritter.js"
- , "$js-cookie/src/js.cookie.js"
+ , "$js-cookie/dist/js.cookie.js"
, "$tinycon/tinycon.js"
, "vendors/farbtastic.js"
, "skin_variants.js"
@@ -33,7 +33,7 @@
, "colorutils.js"
, "draggable.js"
, "pad_utils.js"
- , "$js-cookie/src/js.cookie.js"
+ , "$js-cookie/dist/js.cookie.js"
, "vendors/browser.js"
, "pad_cookie.js"
, "pad_editor.js"
@@ -73,7 +73,7 @@
, "scroll.js"
, "caretPosition.js"
, "pad_utils.js"
- , "$js-cookie/src/js.cookie.js"
+ , "$js-cookie/dist/js.cookie.js"
, "security.js"
, "$security.js"
]
diff --git a/src/package-lock.json b/src/package-lock.json
index 5e66a91fe..e30e67e83 100644
--- a/src/package-lock.json
+++ b/src/package-lock.json
@@ -3372,9 +3372,9 @@
}
},
"js-cookie": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
- "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.0.tgz",
+ "integrity": "sha512-oUbbplKuH07/XX2YD2+Q+GMiPpnVXaRz8npE7suhBH9QEkJe2W7mQ6rwuMXHue3fpfcftQwzgyvGzIHyfCSngQ=="
},
"js-tokens": {
"version": "4.0.0",
diff --git a/src/package.json b/src/package.json
index 5ed26653e..8eaa4924a 100644
--- a/src/package.json
+++ b/src/package.json
@@ -45,7 +45,7 @@
"find-root": "1.1.0",
"formidable": "1.2.2",
"http-errors": "1.8.0",
- "js-cookie": "^2.2.1",
+ "js-cookie": "^3.0.0",
"jsdom": "^16.7.0",
"jsonminify": "0.4.1",
"languages4translatewiki": "0.1.3",
diff --git a/src/static/js/pad_utils.js b/src/static/js/pad_utils.js
index 7b2d50604..6fb46fde0 100644
--- a/src/static/js/pad_utils.js
+++ b/src/static/js/pad_utils.js
@@ -383,17 +383,18 @@ const inThirdPartyIframe = () => {
// This file is included from Node so that it can reuse randomString, but Node doesn't have a global
// window object.
if (typeof window !== 'undefined') {
- exports.Cookies = require('js-cookie/src/js.cookie');
- // Use `SameSite=Lax`, unless Etherpad is embedded in an iframe from another site in which case
- // use `SameSite=None`. For iframes from another site, only `None` has a chance of working
- // because the cookies are third-party (not same-site). Many browsers/users block third-party
- // cookies, but maybe blocked is better than definitely blocked (which would happen with `Lax`
- // or `Strict`). Note: `None` will not work unless secure is true.
- //
- // `Strict` is not used because it has few security benefits but significant usability drawbacks
- // vs. `Lax`. See https://stackoverflow.com/q/41841880 for discussion.
- exports.Cookies.defaults.sameSite = inThirdPartyIframe() ? 'None' : 'Lax';
- exports.Cookies.defaults.secure = window.location.protocol === 'https:';
+ exports.Cookies = require('js-cookie/dist/js.cookie').withAttributes({
+ // Use `SameSite=Lax`, unless Etherpad is embedded in an iframe from another site in which case
+ // use `SameSite=None`. For iframes from another site, only `None` has a chance of working
+ // because the cookies are third-party (not same-site). Many browsers/users block third-party
+ // cookies, but maybe blocked is better than definitely blocked (which would happen with `Lax`
+ // or `Strict`). Note: `None` will not work unless secure is true.
+ //
+ // `Strict` is not used because it has few security benefits but significant usability drawbacks
+ // vs. `Lax`. See https://stackoverflow.com/q/41841880 for discussion.
+ sameSite: inThirdPartyIframe() ? 'None' : 'Lax',
+ secure: window.location.protocol === 'https:',
+ });
}
exports.randomString = randomString;
exports.padutils = padutils;
diff --git a/src/tests/frontend/index.html b/src/tests/frontend/index.html
index 9f542ee13..22c42ab15 100644
--- a/src/tests/frontend/index.html
+++ b/src/tests/frontend/index.html
@@ -18,7 +18,7 @@
-
+