HTTP响应有重定向,但没有往返?

HTTP响应有重定向,但没有往返?,http,redirect,Http,Redirect,我希望浏览器能够反映一些其他URL,而不是用于创建请求的URL,但不会往返到服务器 我可能会这样做: POST /form HTTP/1.1 ... …然后返回: HTTP/1.1 200 OK Location: /hello 但这将导致重定向,浏览器将再次请求URL/hello 我想告诉浏览器,虽然您刚才发送的请求是POST/some_url,但我现在返回的实际资源实际上称为GET/hello/1,但没有执行往返。i、 e.地点: 有没有办法用JavaScript或base=”“属性实现

我希望浏览器能够反映一些其他URL,而不是用于创建请求的URL,但不会往返到服务器

我可能会这样做:

POST /form HTTP/1.1
...
…然后返回:

HTTP/1.1 200 OK
Location: /hello
但这将导致重定向,浏览器将再次请求URL/hello

我想告诉浏览器,虽然您刚才发送的请求是POST/some_url,但我现在返回的实际资源实际上称为GET/hello/1,但没有执行往返。i、 e.地点:

有没有办法用JavaScript或base=”“属性实现这一点?当我点击F5(刷新)时,它会告诉浏览器请求/hello/1,而不是“提交后警告”

HTTP/1.1 200 OK
Location: /hello
实际上,这可能行不通;它的状态应该是30倍,而不是200倍(“303查看其他”是回复帖子的最佳状态),并且“位置”应该是一个完整的绝对URL

(如果您的脚本只是说“Location:/relativeurl”,而没有30x状态,CGI服务器通常会通过获取新URL并返回它来执行内部重定向,而不会告诉浏览器发生了什么有趣的事情。这听起来像是您想要的,但实际上并非如此,因为从浏览器的角度来看,它与origi没有什么不同返回200和直接页面的nal脚本。)

但这将导致重定向,浏览器将再次请求URL/hello

实际上,由于HTTP/1.1 keep alives,这可能没有您想象的那么糟糕。只要重定向在同一台服务器上,客户端就应该能够立即响应重定向(在下一个数据包中)

当我点击F5(刷新)时,是否有任何方法[…]告诉浏览器请求/hello/1,而不是提交后警告

HTTP/1.1 200 OK
Location: /hello

不。请坚持使用POST重定向GET模型来解决此问题。

不。Http是无状态的,每个请求都有一个答案。当您发布时,您需要立即重定向到GET页面以防止出现双重发布-您不希望它位于该发布url上。重定向是告诉浏览器它位于新页面上的内容。这就是方法它是有效的。

好吧,事情是这样的,我不想要往返是有原因的,这不是性能。最好是我能结合请求准备响应,我可能想根据帖子传递和/或操纵请求,如果我往返就不那么容易了。我试着使用一个唯一的ID和往返通过将其放入路径设置为/hello/1的cookie中进行ipping。然后,GET/hello/1和服务器端将拾取该值,我将能够拾取为该请求缓存的任何状态。这是可行的,但您会怎么想?我通常会在重定向查询字符串上放置一个参数,以便后续请求拾取。由于Cookie在站点上打开的所有页面/窗口之间共享,因此该参数确保操作后响应信息进入正确的窗口。(然后我用一个时间戳值对其进行备份,以使post操作信息在一段时间后“过期”。这样,如果您将其添加到书签或返回到相同的URL,则相同的信息不会再次出现。)但是,如果您有很多数据要输出以响应某个操作,那么这可能不太实际;您可以将其临时存储在数据库中,并将其键入参数,但这开始变得有点烦人。