所需的防伪cookie“__RequestVerificationToken”不仅存在于Google Chrome中

时间:2015-02-15 10:46:31

标签: asp.net-mvc google-chrome cookies csrf

我有一个现有的网站,而且几天前我突然无法使用Google Chrome进行开发。当我使用标准编辑和创建页面时,我得到上述错误。但我不是在Internet Explorer中获取它。我使用Windows 10(安装了所有更新)和VS2013与Update 4.该项目是最新的MVC版本。我甚至检查了web.config但没有任何改变。我删除了所有历史记录,Cookie,密码等。 任何人都有任何想法?

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。对我来说,解决方案是清除我的浏览器cookie并禁用Adblock。其他插件可能具有相同的效果。我认为问题仅限于Visual Studio / Chrome开发环境,无论最终用户是否启用了Adblock,都不会在生产环境中出现问题。

答案 1 :(得分:2)

你有

吗?
<httpCookies requireSSL="true" />
你的Web.config中的

?将其更改为false。然后在转换文件(Web.Prod.config和其他具有SSL的环境)中:

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

答案 2 :(得分:1)

我最近几周也遇到了同样的问题,但它也是在从Chrome发起后扩展了跨浏览器。更奇怪的是,它仍然能够在使用所有浏览器的不同机器上完美地运行相同的项目。 我甚至已经卸载所有扩展程序,删除所有Cookie /数据,完全退出Chrome并重新安装。问题仍然存在。

在部署到Azure网站时,问题并未出现在任何平台上。我目前的解决方法是Ctrl-F [ValidateAntiForgeryToken]并注释掉每次出现,并在部署时重新启用它。很烦人,但它确实有效。

答案 3 :(得分:0)

在Chrome中发生了这种情况,似乎与使用登录表单上的“记住我”复选框相关,然后关闭然后重新打开浏览器。令牌出现在检查页面源上,但在visual studio的调试会话期间报告不存在。通过清除浏览器缓存而不检查“记住我”框我没有遇到问题 - 但我不完全理解为什么!!

我在Chrome中重现错误的步骤:

  1. 登录您的MVC网络应用程序,点击“记住我”进行检查
  2. 关闭浏览器
  3. 打开浏览器,查看当前保留的会话
  4. 尝试退出 - 此处发生错误。
  5. 无论如何,以下解决方案对我有用。在MVC视图表单中,尝试替换它:

    @Html.AntiForgeryToken()
    

    使用:

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

答案 4 :(得分:0)

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

这可能是因为Chrome等浏览器使用公开后缀列表(https://publicsuffix.org/list/effective_tld_names.dat)来限制某些Cookie。如果在cookie上设置的域后缀是公开共享的,那么浏览器可能会阻止这样的cookie,以防止自己发送&#34;未授权的&#34;数据到同一域上运行的其他服务器。