gpt4 book ai didi

c# - Safari 将空白表单发送到我的服务器

转载 作者:行者123 更新时间:2023-12-02 17:19:11 26 4
gpt4 key购买 nike

简短的问题:为什么 safari 会导致我的 MVC3 Web 应用程序出现错误 - Request.Form 由于某种原因为空?

详细问题:每次出现未捕获的异常时,我的 MVC3 网站都会向我发送一封电子邮件。我使用这些来快速查找和修复错误,电子邮件包含异常、堆栈跟踪、用户的 IP 地址、用户代理字符串以及可能已发布的任何表单值。

最近我发现了一些难以追踪的错误,我想我应该在这里发布我的发现,希望它们能帮助其他人。

最初的症状是以下错误:System.Web.Mvc.HttpAntiForgeryException:未提供所需的防伪 token 或无效。

我的表单操作引发了错误,我无法弄清楚如何让页面进入没有 __RequestVerificationToken 隐藏字段或其他表单字段的状态。

因此,我花了很长时间研究 cookie 以及 token 的工作原理,最终删除了 ActionResult 上的 [ValidateAntiForgeryToken] 属性,看看它是如何进行的 - 但我仍然遇到错误。

然后我注意到 useragent 字符串显示只有 Safari 5.1.7 导致了该问题。

最佳答案

对于像我一样即使使用 [HttpPost] 属性也遇到此问题的人,我已经找到了解决方案。

http://forums.iis.net/t/1182376.aspx/1

IIS 上的该线程描述了 Safari 中的 Negotiate(即 Kerberos)身份验证处理不当。您必须作为提供商禁用Negotiate

在 IIS 中(我使用的是 IIS 7.5),单击您的站点,然后单击身份验证(双击)→ Windows 身份验证(单击)→ 提供程序(右侧)→ 删除谈判并离开 NTLM

这解决了我使用 Safari 时出现的所有问题。

关于c# - Safari 将空白表单发送到我的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com