asp.net-mvc – 对HTTP POST请求的正确响应是什么?
|
对于POST方法,W3规范说:
http://www.ietf.org/internet-drafts/draft-ietf-httpbis-p2-semantics-05.txt(第8.5节) 标准响应实际上似乎是向新创建的资源发送重定向。 我使用ASP.NET MVC构建我的网站,并试图遵循规范,所以创建了一个ResourceCreatedResult类: public class ResourceCreatedResult : ActionResult
{
public string Location { get; set; }
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.Clear();
context.HttpContext.Response.StatusCode = 201;
context.HttpContext.Response.ClearHeaders();
context.HttpContext.Response.AddHeader("Location",Location);
}
}
我的行为看起来像这样: [AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateNew(string entityStuff)
{
Entity newEntity = new Entity(entityStuff);
IEntityRepository entityRepository = ObjectFactory.GetInstance<IEntityRepository>();
entityRepository.Add(newEntity);
ActionResult result = new ResourceCreatedResult()
{ Location = Url.Action("Show",new { id = newEntity.Id }) };
return result;
}
但是,IE,Firefox和Chrome都无法重定向到新资源。我弄错了生成正确的响应,或者Web浏览器不期望这种类型的响应,而是依赖服务器发送重定向响应? 解决方法重定向post或post / redirect / get后,您的应用程序必须做到用户友好。编辑。这是超越HTTP规范。如果我们在POST后简单地返回201,浏览器后退按钮的行为就会很糟糕。 请注意,Web服务请求(不响应浏览器)完全遵循标准,并且不会在发布后重定向。 它工作这样。 >浏览器POSTS的数据。 现在 – 嘿presto! – 后退按钮工作。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vs2008中文版提供下载(包含中文msdn),包括vs2008序列号和破
- asp.net-mvc-3 – 选择更改事件 – Html.DropDownListFor
- asp.net – 存储字符串数组在appSettings?
- 优化 – 在经典ASP内存泄漏中实现对象缓存
- asp.net – FileUpload.hasFile始终为False
- 回发后用F5写的asp.net问题,因为它做了应有的事情
- views – 我应该在asp.net MVC6中为我的所有图像添加asp-ap
- asp.net – Request.Browser.Platform不返回iPad,OSX或Wind
- asp.net-mvc-3 – 此版本的SQL Server不支持没有聚集索引的
- 为什么我的ASP.NET MVC持久性的auth cookie不起作用?
- asp.net – 如何在.net WebApi2应用程序中使用OA
- 如何在ASP.Net webform中使用标签?
- asp.net-mvc-3 – dataannotations在主键上设置标
- asp.net-mvc – ASP.NET MVC 4覆盖发出的html名称
- ASP.NET MVC:经过几分钟的缓慢访问,然后每次以下
- asp.net-mvc – 如何使用activedirectorymembers
- asp.net-mvc – 自定义ActionLink帮助器,它知道你
- asp.net-mvc – Visual Studio提示使用Razor语法
- asp.net – System.Linq.Dynamic不支持OrderByDe
- asp.net-mvc – 将默认日期格式应用于ASP.NET MV
