首页新闻找找看学习计划

ASP.NET MVC 所需的防伪+Cookie“__RequestVerificationToken”不存在

0
悬赏园豆:10 [已解决问题] 解决于 2016-06-13 10:56

用了mvc这么久,有时候会出现下边的问题,之前没留言,现在想解决

所需的防伪+Cookie“__RequestVerificationToken”不存在。

我页面里用了@Html.AntiForgeryToken() 方法。cs代码里用了[ValidateAntiForgeryToken]

有没有人和我遇到同样的问题啊,不是经常出现,只是偶尔在某页面会出现这样的错误,多数页面是正常的,如果弃掉ValidateAntiForgeryToken 又不安全,求高手如何解决!!!!!!!!!!!!!

anech的主页 anech | 初学一级 | 园豆:92
提问于:2014-12-12 17:39
< >
分享
最佳答案
0

data: { "Id": $("#id").val(),'__RequestVerificationToken':$('input[name=__RequestVerificationToken]').val() },

收获园豆:4
Henery | 菜鸟二级 |园豆:206 | 2016-01-05 16:40

不是这个原因,是因为缓存的原因, 因为有缓存,所以生成页面的时候没有执行页面里的内容,所以cookie里取不到

anech | 园豆:92 (初学一级) | 2016-01-05 21:16
其他回答(3)
0

这个隐藏域会出现在页面中,你可以通过查看源文件有没有,用fiddler监视请求报文,看看__RequestVerificationToken有没有在里面。

收获园豆:6
happydaily | 园豆:674 (小虾三级) | 2014-12-12 18:11

非常你的回答。

我可能找到原因了,可能是因为缓存了视图的原因,再重新获取页面的时候,@Html.AntiForgeryToken() 就没有执行,没有生成cookie,不过我还不确定是不是这个原因,但现在可以说服我,我觉得。

支持(0) 反对(0) anech | 园豆:92 (初学一级) | 2014-12-12 18:44

@anech: 你的猜测很有道理~

支持(1) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2014-12-13 08:46
0

问题解决了吗,我也遇到和你一样的问题,在内网是没问题,外网就不行了

文艺流浪汉 | 园豆:202 (菜鸟二级) | 2015-05-04 10:27

就是我说的那个原因,因为加了缓存,所以页面里的__RequestVerificationToken一直没变,但是action有缓存,所以在第二次执行的时候,没用执行,cookie也就没有写入__RequestVerificationToken,在页面提交时就出现了异常

支持(0) 反对(0) anech | 园豆:92 (初学一级) | 2015-05-04 10:53
0

在请求之前将request的cookie信息 copy到response中。已解决

watercity | 园豆:208 (菜鸟二级) | 2016-06-07 13:23

具体代码是怎么样的?

支持(0) 反对(0) 大漠孤阳 | 园豆:186 (初学一级) | 2016-12-21 13:07

@马甲线: 在需要的地方调用:

private void SetResponseVerify()
{
var res = Response.Cookies["__RequestVerificationToken"];
var req = Request.Cookies["__RequestVerificationToken"];
if (res == null || string.IsNullOrEmpty(res.Value))//set Response
{
if (req != null && !string.IsNullOrEmpty(req.Value))
{
res = new HttpCookie("__RequestVerificationToken", req.Value);
Response.SetCookie(res);
}
}
}

支持(0) 反对(0) watercity | 园豆:208 (菜鸟二级) | 2016-12-21 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册