必需的防伪 cookie "__RequestVerificationToken" 在 Google Chrome 中不存在

5

我有一个现有的网站,但是突然有几天了,我不能再使用Google Chrome进行开发。当我使用标准编辑和创建页面时,会出现上面的错误提示。但是在Internet Explorer中没有这个问题。我使用的是Windows 10(已安装所有更新)和带有Update 4的VS2013。该项目是最新的MVC版本。我甚至检查了web.config文件,但是没有任何更改。我删除了所有历史记录、cookies、密码等信息。有人有什么想法吗?

5个回答

2

我曾经遇到过同样的问题。我的解决方法是清除浏览器的cookies并禁用Adblock。其他插件也可能产生相同的影响。我认为这个问题仅限于Visual Studio / Chrome开发环境中,在生产环境中无论用户是否启用Adblock都不会出现。


我已经做过了,但是没有起作用。不过还是谢谢你的回复。 - LockTar
@Ralph 是的,我很抱歉。我也遇到了同样的问题。在我添加SSL到我的Web应用程序时发生了这个问题。清除cookies后主页可以加载,我以为已经解决了。但是在尝试加载其他页面时,问题仍然存在。 - weirdev
1
@RalphJansen 请尝试禁用您在Chrome上安装的任何插件。对我来说,问题出在AdBlock上。 - weirdev
你可能说得对。我今天没有遇到这个问题,所以解决它非常令人沮丧。但禁用附加组件可能会解决它。如果我再次遇到这个问题,我会尝试一下。 - LockTar
昨天我工作了一个小时后遇到了这个问题。所以我开始了一些调试会话,突然间一切都失败了。我尝试禁用AdBlock并将我的本地主机URL添加到忽略列表中,但对我来说没有起作用... - LockTar

2
你是否拥有一个

<httpCookies requireSSL="true" />

你的Web.config文件中有一个名为requireSSL的属性吗?将其改为false。然后在你的转换文件(Web.Prod.config和其他启用SSL的环境)中:

<httpCookies requireSSL="true" xdt:Transform="SetAttributes" />

1
这可能是解决方案。我两周前禁用了SSL,现在问题已经不存在了。我必须说,我没有花太多时间在那个项目上,所以我不确定。 - LockTar
我突然又遇到了同样的问题,但我没有启用 SSL ,所以肯定是其他原因... - LockTar

1
我最近几周也遇到了同样的问题,而且它还从Chrome发源后扩展到了跨浏览器。更奇怪的是,在另一台使用所有浏览器的不同机器上,相同的项目仍然完美运行。我已经卸载了所有扩展程序,删除了所有cookie /数据,完全退出Chrome并重新安装它。问题仍然存在。
在部署到Azure网站时,在任何平台上都不存在该问题。我目前的解决方法是使用Ctrl-F [ValidateAntiForgeryToken]并注释掉每个实例,然后在部署时重新启用它。很烦人,但它有效。

我没有在另一台电脑上。我没有更多的机器来测试它。我在IE中没有这个问题,所以现在是调试我的代码的解决方法... - LockTar
我在处理Chrome时遇到了问题,可能是由于插件出现问题。我尝试使用FireFox,它可以正常工作。然后我尝试在Chrome中使用隐身模式,也可以正常工作。https://dev59.com/sHLYa4cB1Zd3GeqPaKIi - dmarlow

0

您是否在云平台上?Chrome从云域发出cookie,因此唯一的方法是将另一个命名域映射到您的云网站。

这可能是因为像Chrome这样的浏览器使用公共后缀列表(https://publicsuffix.org/list/effective_tld_names.dat)来限制某些cookie。如果在cookie上设置的域后缀是公开共享的,则浏览器可能会阻止此类cookie,以防止其向运行在同一域上的其他服务器发送“未经授权”的数据。


这更适合作为评论而不是答案。顺便问一下,具体来说,问题在询问什么?请确保您的答案提供了那个东西或替代方案。答案可以是“不要那样做”,但还应包括“尝试这个替代方案”。任何让提问者朝着正确方向前进的答案都是有帮助的,但请尽量提及您的答案中的任何限制、假设或简化。简洁明了是可以接受的,但更完整的解释更好。 - baduker

0

这个问题发生在我使用Chrome浏览器时,似乎与在登录表单上使用“记住我”复选框并关闭再重新打开浏览器有关。检查页面源代码时,令牌存在,但在Visual Studio的调试会话中报告为不存在。通过清除浏览器缓存并不勾选“记住我”框,我没有遇到这个问题 - 但我不完全理解为什么!!

在Chrome中重现错误的步骤:

  1. 登录MVC Web应用程序,点击“记住我”以使其被选中
  2. 关闭浏览器
  3. 打开浏览器到您当前保留的会话
  4. 尝试退出 - 错误发生在此处。

无论如何,以下解决方案对我有效。在您的MVC视图表单内,尝试替换此内容:

@Html.AntiForgeryToken()

使用:

ViewContext.Writer.Write(Html.AntiForgeryToken().ToHtmlString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接