2011-04-25 127 views
3

我有一个HTML表单执行DELETE请求后重定向(方法= POST &隐藏X-HTTP-方法-倍率= DELETE)如何成功DELETE请求

当删除请求是成功的,我怎么告诉浏览器重定向到另一个页面? 303 +标题位置好吗?

目前,浏览器不会显示空的响应,但保留以前的响应(我猜的,因为204个状态码)。 如果我添加一个位置标题(仍然是204状态码),它不会改变位置。

随着303 +位置我所期望的行为,但我不知道如果303是在成功删除有效的状态代码。 202(接受)删除?

+0

这是一个POST请求,而不是一个DELETE请求。 – 2015-07-24 05:25:11

+0

@JulianReschke的API实际删除请求,但它不可能在所有主要的浏览器做不javascript中的DELETE请求(这只是在一个页面一个

这里)。所以API查找X-HTTP-Method-Override表单参数来覆盖http方法 – Mathieu 2015-07-24 14:25:13

+0

没有浏览器支持表单中的DELETE。它不是HTML的一部分。无论如何:POST请求是一个POST请求,无论您附加多少个自定义标题。 – 2015-07-27 04:13:47

回答

2

303加位置是最好的选择。不要担心什么是“成功的DELETE”是或手段,因为你正在使用POST,其中有一组不同的语义,而303是量身订做redirecting POST requests

10.3.4 303看到其他

于所述请求的响应可以根据不同的URI中找到,且必须使用该资源一GET方法来提取。此方法主要用于允许POST激活的脚本的输出将用户代理重定向到选定的资源。新的URI不是最初请求的资源的替代参考。 303响应绝不能被缓存,但对第二个(重定向)请求的响应可能是可缓存的。

+0

也许我不应该说我正在使用POST请求:我在这里只使用POST请求,因为我无法在HTML表单中删除请求(没有JavaScript)其他客户端将做一个DELETE请求。控制器将POST + X-HTTP-method-override = DELETE请求视为DELETE请求。无论如何,如果没有人提出更好的解决方案,我想我会坚持303并将你的回答标记为答案:) – Mathieu 2011-04-26 08:44:37