奇怪且偶发的 Chrome 错误:分块 cookie 不完整

use*_*704 5 .net c# asp.net cookies google-chrome

我们有一个 .NET Framework 4.7 Azure 托管的 Web 应用程序,现在已经平稳运行很长时间了。我们已经告诉所有用户他们应该使用 Chrome,据我们所知,大多数用户都这样做了。

\n

几周前,一位用户报告了一个奇怪的服务器端错误。屏幕上的消息不是很有帮助,因此我们关闭了自定义错误。这似乎可以帮助我们获取实际的错误消息:

\n
\n

分块的 cookie 不完整。仅找到 0 个预期块,总共 0 个字符。可能已超出客户端大小限制。

\n
\n

我们以前从未见过该错误,但快速搜索提供了解决方案。我们要求用户清除cookie并重试。那行得通。几天后,又有两个用户报告了完全相同的错误。然后更多。然后还有更多。最初的修复对某些人有效,但对其他人无效。最终,我们提出了以下步骤:

\n
\n
    \n
  1. 注销我们所有的应用程序。关闭所有 Chrome 标签页和窗口。打开一个新的 Chrome 窗口。
  2. \n
  3. 清除浏览器数据
    \na。单击右上角的三个点
    \nb。选择\xe2\x80\x9c更多工具>清除浏览器数据\xe2\x80\x9d
    \nc。可能最好选择 \xe2\x80\x9cAll Time\xe2\x80\x9d 但用户可能首先尝试更短的时间范围
  4. \n
  5. 将 Chrome 重置为默认设置
    \na。说明: https: //support.google.com/chrome/answer/3296214?hl =en
  6. \n
  7. 关闭所有 Chrome 标签页和窗口,然后重试。
  8. \n
\n

如果仍然不起作用,请按照以下步骤操作\xe2\x80\xa6

\n
    \n
  1. 注销我们所有的应用程序。关闭所有 Chrome 标签页和窗口。打开一个新的 Chrome 窗口。
  2. \n
  3. 在地址栏中,复制并粘贴以下地址:chrome://flags
  4. \n
  5. 在搜索栏中输入:samesite
  6. \n
  7. 您的窗口现在应如下所示:\n在此输入图像描述
  8. \n
  9. 对于所有三个选项,将下拉列表从“默认”更改为“已启用”
  10. \n
  11. 单击右下角的 \xe2\x80\x9cRELAUNCH\xe2\x80\x9d 按钮。
  12. \n
  13. Chrome 重新启动后,像平常一样返回应用程序。
    \na。您现在应该可以访问了。
    \nb. 然而,我们\xe2\x80\x99还没有完成!
  14. \n
  15. 重复上面的 1-5,这次将所有三个选项重置回默认值。
    \na。然后再次单击 \xe2\x80\x9cRELAUNCH\xe2\x80\x9d 按钮。
  16. \n
\n

如果仍然不起作用,请按照以下步骤操作\xe2\x80\xa6

\n
    \n
  1. 尝试通过 Microsoft Edge 访问我们的应用程序
  2. \n
\n
\n

(我们不再要求用户在隐身窗口中尝试,因为他们的许多办公室都限制其使用。)

\n

与此同时,我们正在疯狂地努力找出错误的实际原因。令人惊讶的是,关于这一点的讨论并不多。它似乎与 Chrome 处理同站点 cookie 的最新更新有关,但主要问题是......我们无法重现它。它似乎是随机出现的。一些用户报告说,他们不做任何事情,错误就会消失。

\n

然后,当然......我们有一个用户,上述步骤对他来说都不起作用。甚至没有使用 Edge。到目前为止,上述步骤对除了他之外的所有人都有效。

\n

有人遇到过这样的事情吗?有任何想法吗?建议?

\n

use*_*704 5

对于任何可能遇到此错误的人,以下是我们最终解决该错误的方法。此时,我将放弃长期记忆,因此我会尝试尽可能准确。

问题是由于在 cookie 中放入了太多数据。在我们的例子中,cookie 被用作验证令牌。

该错误似乎随机发生的原因是某些浏览器(即:chrome)在更新中包含 cookie 长度限制。因此,当用户的浏览器版本更新时,他们就会开始看到错误。

我们必须首先找出哪个 cookie 导致了错误。这并不难,因为大多数的值都很短。一旦我们知道哪个 cookie 出了问题,我们就可以想出如何大幅减少写入其中的数据量。