asp.net-mvc-5 – 在@Html.AntiForgery发送HTTP标头后,服务器无法追加标头
|
我正在开发一个asp.net mvc 5应用程序,我试图通过应用下面的代码重定向到ReturnUrl: [HttpPost]
[AllowAnonymous]
public ActionResult Login(UserLogin model,string returnUrl)
{
if (ModelState.IsValid)
{
string EncryptedPassword = GetMD5(model.Password);
if (DataAccess.DAL.UserIsValid(model.Username,EncryptedPassword))
{
FormsAuthentication.SetAuthCookie(model.Username,true);
if (String.IsNullOrEmpty(returnUrl))
{
return RedirectToAction("Index","Home");
}
else
{
Response.Redirect(returnUrl);
}
}
else
{
ModelState.AddModelError("","Invalid Username or Password");
}
}
return View();
}
上面的代码工作正常,但问题是当我发布登录表单时,它给了我一个我以前从未遇到过的异常,我很难解决在Login.cshtml视图中生成的异常,在线: @Html.AntiForgeryToken() 它抛出的异常: Server cannot append header after HTTP headers have been sent. 我研究了很多,但我无法得出结论.当我删除@ Html.AntiForgeryToken()行时,我的应用程序工作正常,但我不想这样做,我希望我的应用程序保持跨站点请求保护. 任何人都可以帮助我,我如何摆脱这个例外? 解决方法当Response.Redirect(anyUrl)的状态代码设置为302时,标题将添加到响应中:HTTP 1.0 302 Object Moved Location: http://anyurl.com 当执行ViewResult并且razor呈现视图时,将调用Html.AntiForgeryToken(),因此帮助程序尝试将标题X-Frame-Options和一些cookie添加到响应中,这是异常的原因. 但是不要担心你可以抑制添加X-Frame-Options标头,只需把这个AntiForgeryConfig.SuppressXFrameOptionsHeader = true;在Application_start中. 但我建议你改变这个: Response.Redirect(returnUrl); 至 return Redirect(returnUrl); 注意 自.NET代码打开后,您可以看到AntiForgeryToken的工作原理,请参见此处AntiForgeryWorker (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在ASP.NET MVC中的LinkButton
- asp.net-mvc – 找到相同类型的两个实体之间的差异
- asp.net-mvc – 阻止IIS通过ASP.NET管道提供静态文件
- asp.net – 处理程序执行子请求时出错’System.Web.Mvc.Htt
- 如何避免异常捕获.NET中的复制粘贴
- asp.net-mvc – MVC 3依赖解析器或Ninject MVC插件?
- asp.net-mvc – asp.net mvc – string或int的路由(即/ typ
- asp.net – 使用回发解析.Net页面
- asp.net-mvc – 视图模型和数据传输对象之间的区别是什么?
- asp.net-mvc-3 – Microsoft AntiXSS替代
- asp.net-core – JsonConvert DataSet .NET Core
- asp.net – 未知的服务器标签’ajaxToolkit:Cal
- asp.net – 如何向python中的.aspx页面提交查询
- 在ASP.NET MVC中动态地从数据库生成CSS文件
- asp.net-mvc – @ Html.DropDownListFor如何添加
- asp.net-mvc – 导出Excel文件以查看(MVC)
- asp.net-mvc – Asp.Net MVC和HTML5 PUSH通知
- asp.net-mvc – ASP.NET MVC和混合模式认证
- 基于角色的启用/禁用asp.net中的控件
- ASP.NET网站Windows窗体应用程序WCF服务:客户端
