手动新建标签页与外部链接自动开页的ASP.NET Core验证令牌不一致问题
问题:Firefox/Chrome 119中ASP.NET Core防伪令牌因标签页打开方式出现异常行为
核心现象
- 在Firefox 119和Chrome 119环境下,ASP.NET Core应用遇到防伪令牌验证异常:
- 手动新建标签页并粘贴链接打开页面时,页面表单生成的
RequestVerificationToken有效,提交POST请求可正常执行 - 通过外部链接(如邮件内的链接)点击自动打开标签页时,同一页面、同一表单生成的
RequestVerificationToken无效,POST请求返回404或401等令牌失效对应的预设响应
- 手动新建标签页并粘贴链接打开页面时,页面表单生成的
- 该问题仅在浏览器已存在同域标签页时必现
初步排查结果
- 推测异常可能和标签页间的Cookie共享/泄漏有关,但无法解释为何仅自动开页会出现这种差异
- 观察到自动开页生成的验证令牌长度明显更短,具体原因暂不明确
- 给接收POST请求的处理器添加
[IgnoreAntiforgeryToken]特性后,问题完全消失,确认异常是由开页方式导致防伪令牌验证失败引发
测试更新
搭建了仅包含单个Razor Page的简易测试应用(无认证逻辑,仅含带提交按钮的简单表单),并通过本地邮件发送链接测试,发现行为出现反转:
- 外部链接打开的标签页中,令牌验证有效
- 但该操作会导致浏览器中已加载的同域标签页内的令牌失效,问题变得更复杂,后续会更新排查进展
内容的提问来源于stack exchange,提问作者LFN
相关产品推荐
相关产品推荐

