响应,以便浏览器不做任何事情 - 这可能吗?

时间:2009-03-17 15:05:18

标签: http browser response

是否可以进行这样的HTTP响应,浏览器会忽略它并继续显示以前显示的页面?

我的意思是以下情况:

a)用户点击内容

b)一些POST进入服务器(或GET,但让我们坚持使用POST更有趣)

c)服务器决定由于某种原因它此时不想发送回复

d)服务器发送专门制作的回复

e)浏览器不显示错误页面,不显示空白页面,不重定向任何地方,不重新加载 - 只是一直显示它显示的内容,好像用户从未提交过表单

PS当然它可以用AJAX包装,但我问是否可以使用简单的非JavaScript解决方案

5 个答案:

答案 0 :(得分:12)

尝试返回HTTP 204 No Content。请参阅RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1 )中此响应代码的说明,其中包含:

  

如果客户端是用户代理,它不应该从中更改其文档视图   导致请求被发送。此响应主要是为了允许   输入操作,而不会导致更改用户代理的活动状态   文档视图,虽然任何新的或更新的元信息应该应用于   当前在用户代理的活动视图中的文档。

答案 1 :(得分:1)

这是一种通常称为AJAX的方法。它需要JavascriptXMLHttpRequest函数。

编辑:注意到底部的'PS'。另一个答案中建议的204 response看起来可能是一个有效的非Javascript解决方案。

答案 2 :(得分:1)

假设你这样做。

用户做什么?当然,再次提交表格。

几次。

然后他们决定你的网站坏了,然后离开。

答案 3 :(得分:0)

我认为您需要使用Javascript来执行此操作,您可以发送请求,并且根据服务器响应,Javascript可以返回false,从而避免刷新/重新加载实际页面。

我不知道204响应,但也许你可以从服务器端这样做。

另一种方法(也是Javascript)是在发送请求后立即返回false,并且根据服务器响应(使用ajax),您可以修改实际页面或将用户发送到另一个页面。 / p>

答案 4 :(得分:-2)

没有。 HTTP协议由请求 - 响应周期组成。服务器无法决定不回复(它可以,但它会破坏协议并提交错误)。