我希望浏览器反映除用于创建请求的 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 而不是那样,发布提交警告?
HTTP/1.1 200 OK
Location: /hello
实际上这可能行不通;它应该是 30x 状态而不是 200(“303 See Other”最适合对 POST 的响应),并且“Location”应该是完整的绝对 URL。
(如果你的脚本只是说“位置:/relativeurl”而没有 30x 状态,CGI 服务器通常会通过获取新 URL 并返回它来执行内部重定向,而不告诉浏览器发生了任何有趣的事情。这可能听起来像你想要的,但它并不是真的,因为从浏览器的角度来看,它与返回 200 和直接页面的原始脚本没有什么不同。)
但这会导致重定向,浏览器将再次请求 URL /hello。
实际上,这可能没有您想象的那么糟糕,这要归功于 HTTP/1.1 keep-alives。只要客户端位于同一服务器上,就应该能够立即响应重定向(在下一个数据包中)。
有什么办法[...]当我按F5(刷新)而不是发布提交警告时,这会告诉浏览器请求/hello/1?
没有。坚持使用 POST-Redirect-GET 模型来解决这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)