我的Spring网络应用处理CSRF令牌的方式出了问题。当我尝试在浏览器中登录时,出现以下错误:
There was an unexpected error (type=Forbidden, status=403).
Could not verify the provided CSRF token because your session was not found.
奇怪的是,如果我在Chrome或其他计算机中使用隐身模式,则错误会消失。所以我想我可能会遇到过时的CSRF cookie,并删除了Chrome中与登录页面关联的唯一cookie。当我刷新时,我可以看到服务器为我提供了一个与原始cookie不同的新cookie。错误怎么可能仍然存在?
我之前能够在另一台机器上重现该问题,当我删除Chrome中的所有内容时,它就开始工作了。我不想在这台机器上删除Chrome中的所有内容,而且,我想首先了解是什么导致了这个问题。
我可以在隐身模式和普通模式下看到以下字段:
<input type="hidden" name="_csrf" value="96dddccc-4425-40b2-9947-462877c94238">
但是,当我在正常模式下刷新页面时,每次都会获得一个新的CSRF值,而当我以隐身模式刷新页面时,每次都会获得相同的值。
我在Spring应用程序中查看了所有配置文件,但我没有在任何地方配置CSRF令牌。 Spring正在一些我无法访问的黑盒子里面看到这是错误的。