Chrome 扩展程序不发送 SameSite=Lax cookie

Def*_*ake 2 javascript cookies httponly google-chrome-extension samesite

我在通过弹出脚本中的 chrome 扩展程序处理 cookie 时遇到了一些麻烦。

popup.js 内容:

document.addEventListener('DOMContentLoaded', () => {
    function cookieinfo() {
        chrome.cookies.getAll({url: 'http://localhost:8080'}, function(cookie) {
            console.log('Found cookie: ', cookie)
            if (cookie == null)
                return;

            fetch('http://localhost:8080', {credentials: 'include'}).then((response) => {
                // do some stuff
                return response;
            });
        });
    }
    window.onload=cookieinfo;
}, false);
Run Code Online (Sandbox Code Playgroud)

我执行的步骤:

  1. 在本地主机上登录我的应用程序(所以我得到了 cookie)
  2. 打开弹窗(所以 popup.js 被执行)
  3. 我在控制台日志中看到 chrome 找到了必要的 cookie
  4. 服务器说传入请求有空 cookie
  5. 我刷新本地主机应用程序的页面
  6. 我现在登出

也许有人知道我做错了什么?

编辑:

看来原因是我的cookie有参数HttpOnly=trueSameSite=Lax相关链接)。我可以在服务器日志中看到另一个 cookie。但是由于这个线程,如果credentials参数设置为include,则所有 cookie 都将被发送,即使是 httpOnly cookie。由于这个答案,我也尝试将它发送到 127.0.0.1 而不是 localhost具有相同的结果,。

我不能设置httpOnly为假。这是由框架强制的。有人知道怎么修吗?

编辑2:

我终于安装了 Cookie 编辑器,发现SameSite=Lax是这个原因。如果我将它设置为No Restriction那么我会在服务器端看到它。不幸的是,我使用的框架只允许LaxStrict选项(Chrome 扩展程序同时失败)。有谁知道如何从 Chrome 扩展程序发送 Lax cookie?

Gan*_*V S 5

这是版本 77 之前 Chromium 中扩展的问题。当跨站点 cookie 设置为SameSite=Lax或 时SameSite=Strict,cookie 不会与跨站点请求一起发送。

这已在所有平台的 78 版中修复。现在 chrome 扩展程序会在SameSite=Lax或时发送 cookie SameSite=Strict

参考:

https://bugs.chromium.org/p/chromium/issues/detail?id=1007973

https://chromium-review.googlesource.com/c/chromium/src/+/1827503

https://bugs.chromium.org/p/chromium/issues/detail?id=617198