当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《带有重定向的HTTP响应,但没有往返?》经验,为你挑选了1个好方法。

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

我也许会这样做:

POST /form HTTP/1.1
...

...然后返回:

HTTP/1.1 200 OK
Location: /hello

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

我想告诉浏览器,虽然您刚发送的请求是POST/some_url,但我现在返回的实际资源实际上称为GET/hello/1,但没有预先形成往返.即位置:......

有没有办法用JavaScript或base =""属性做到这一点?这会告诉浏览器在我按F5(刷新)而不是发布提交警告时请求/ hello/1?



1> bobince..:
HTTP/1.1 200 OK
Location: /hello

实际上这可能不起作用; 它应该是30x状态而不是200("303 See Other"最适合POST的响应),"Location"应该是完整的绝对URL.

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

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

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

有什么办法[...]当我点击F5(刷新)而不是发布提交警告时,会告诉浏览器请求/ hello/1吗?

不.坚持使用POST-Redirect-GET模型来解决这个问题.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有