gpt4 book ai didi

c# - MVC 5 @Html.AntiForgeryToken() 生成具有空值的 html 标签

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:41 25 4
gpt4 key购买 nike

标题是不言自明的。助手 Razor 标签基本上按照预期的方式生成 token cookie,但不是正确的隐藏标签。已经检查了语法,表单没有使用 AJAX,而且 cookie 显然是正确的,所以...

我宁愿捕获机会将此问题标记为重复问题,也不愿在大海捞针之类的问题上花费数周时间。

查看:

@model model
@{
ViewBag.Title = "Title";
}

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
//content
}

Controller :

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ControllerName([Bind(Include = "fields")] Class objectClass)
{
//content
}

标签:

<input name="__RequestVerificationToken" type="hidden" value="">

cookies :

name,value,domain,path,expires,httpOnly,secure
__RequestVerificationToken,5iRF4KpqPUPqnqRnlt74YrS99mOXW7Y-WcjKFOz3GmH3DmtuQPEHHAjm8vqZg9Z7P7F3rymZ2zojemQwJp0meq2etANdI5rm9n0RT7jjqCE1,localhost,/,Sessão,true,false

更新 1:

事实证明这是因为 jQuery 而发生的。我怀疑这是由于与安装的版本 3.1.1 不兼容,这是当前最新的稳定版本。它在强制删除元素属性的第 7958-7961 行周围具有以下条件:

// If set returns undefined, fall back to normal setting
if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
this.value = val;
}

但最后我发现这个情况从v1开始就一直存在,所以即使调试了客户端代码,为什么它只发生在这个项目中仍然是一个谜。无论如何,感谢您的反馈。

最佳答案

起初我怀疑是 jQuery 3.1.1 以某种方式导致了它,但我没有注意到的是我已经停止使用我的 Globalize.js 包。基于它的前提,Globalize 看起来像是一个很棒的验证插件,但是它有太多的依赖项,我当时没有,直到今天还找不到所有的依赖项,即使检查了他们拥有的每个官方 channel 我也能找到.

他们自己的依赖指南站点(查看完整构建):https://johnnyreilly.github.io/globalize-so-what-cha-want/

最终破坏/删除我隐藏的 AntiForgeryToken 输入的是同时使用 jQuery.validate 和 Globalize 时的某种冲突。可能是因为缺少依赖项,但我想我永远不会知道,因为到目前为止我还没有真正看到一个同时使用两者(具有所有功能的全局化)的工作系统。

而且我确实研究了文件排序,jQuery.validateglobalize,所有这些,顺便说一句。再见,全局化。

希望这可以作为将来可能碰巧遇到相同问题的任何人的引用。

关于c# - MVC 5 @Html.AntiForgeryToken() 生成具有空值的 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375786/

25 4 0