Chrome 刷新令牌cookie在页面刷新时神秘丢失[已关闭]

5m1hhzi4  于 2023-01-15  发布在  Go
关注(0)|答案(1)|浏览(499)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我正在尝试将刷新标记存储为cookie,以便在页面刷新期间保持该标记。
要求刷新标记是一个httponlycookie,我不能把它存储在本地存储器中;因为项目的条款而无法接受。
我发誓几天前它在页面刷新时还在持续。突然就不持续了。这让我觉得这是后端的问题,但也可能我只是以为它在持续,而实际上它并没有。
下面是我的刷新标记,其中包含img链接消失时转录的值:x1c 0d1x

Name             Value             Domain
refreshToken    eyJhz[...]qZMik backend.azurewebsites.net   

Path    Expiry                 Size    HttpOnly    Secure    SameSite
/   2023-01-14T17:09:35.768Z    183       ✓         ✓           None

它是使用

const response = await fetch(
    'https://ourbackend.azurewebsites.net/api/users/authenticate',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(details),
      credentials: 'include', // stored!
    }
  );

即使我禁用了页面重载期间发生的所有网络请求,从而排除了后端的可能原因(可能是删除了cookie!),刷新令牌仍然会消失。
如果我取消对刷新令牌端点的注解,我会收到一个带有Cookie: refreshToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYzYjM2ZTFhMzRiZDhiM2MxYjMxYzNmMyIsImaaaCI6MTY3MzQ1Njk3NSwiZXhwIjoxNjczNzE2MTc1fQ.H_blN6BNRNUijbe5dQqZnVwzB6Z5tfg8VT75SaqZMik的请求,这正是我所期望的。我真的不明白为什么会发生这种情况。即使是建议在哪里查找也会很感激。
我用的是Chrome。
edit:下面是我们如何设置刷新标记const refreshToken = issueRefreshToken(userModel._id); // Assigning refresh token in http-only cookie res.cookie('refreshToken', refreshToken, { httpOnly: true, sameSite: 'none', secure: true, maxAge: 3 * 24 * 60 * 60 * 1000 });
而且因为我在其他帖子中看到了CORS,我们的CORS设置是:

const corsOptions: CorsOptions = {
    origin: (requestOrigin, callback) => {
        const origin = requestOrigin || '';
        if (allowedOrigins.indexOf(origin) !== -1 || !origin) {
            callback(null, true); // allow requests with this origin
        } else {
            callback(new Error('Not allowed by CORS'));
        }
    },
    credentials: true, // allow cookies to be sent to the server
    optionsSuccessStatus: 200,
};

// in the server file
app.use(cors(corsOptions));

根据Nyctfall的建议,我去了Firefox并登录。我从登录端点的响应头中收到了一个刷新令牌。在存储选项卡下的Cookie中查找没有显示Cookie。
我将Chrome设置为allow all cookies,该错误在我同事的计算机上可重现,因此我排除了本地问题
edit 2:可能是因为某种原因cookie没有显示在chrome中吗?我可以刷新页面并获得一个新的访问令牌,而刷新令牌显示在请求头上。因此cookie不知何故存在,但没有显示在我的应用程序选项卡中,在Cookie下,在我的localhost:3000选项卡下
edit 3:原来这是一个用户错误,没关系!总是要检查那里。我想关闭它,但我不知道哪个选项是最好的,所以我会选择一个看起来很接近。可以删除它,如果你认为这是正确的举动

dsekswqp

dsekswqp1#

尝试检查浏览器的设置或使用其他浏览器进行测试(例如:Webkit/SafariFirefox
在Chrome Incognito Mode中,根据您的Chrome settings,它可能会更改保存Cookie的方式。
希望这有帮助!

相关问题