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! – 后退按钮工作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何删除特定页面中的cookie?
- asp.net-mvc – 单元测试适配器抛出异常:无法在ASP.NET MV
- 如果DataSource不包含任何项目,如何在ASP.NET C#中隐藏转发
- asp.net – Visual Studio 2015的项目模板
- asp.net – 在.net应用程序中使用jquery禁用回发上的按钮
- asp.net – SelectedValue对DropDownList的SelectedItem.Va
- 即使在完成所有可能的设置后,使用IIS 7在asp.net 2.0中超时
- asp.net – 如何在IIS 7.5(经典模式)中添加通配符映射?
- asp.net – 403从WindowsAzure.Storage生产错误
- ASP.NET Core使用SkiaSharp实现验证码的示例代码
- asp.net-core – ASP.NET Core中的System.Data.E
- ASP.NET MVP vs ASP.NET MVC
- asp.net-mvc – ASP MVC3在actionlink中插入html
- asp.net – 如何使用Membership API与自己的应用
- asp.net-mvc-3 – 如何拦截MVC应用程序中的所有控
- asp.net-mvc – System.Web.Optimization使函数参
- asp.net-mvc – MVC在会话中保存令牌
- asp.net – 方法’Label’没有重载需要3个参数
- asp.net-mvc-3 – EF和存储库模式 – 在一个控制
- asp.net – DataList中的分页无法正常工作