如果部分响应已发送(分块),如何将浏览器发送到错误页面

2023-12-31

这是典型的场景:评估页面,并且有一个缓冲区 - 一旦缓冲区已满,评估的页面部分就会发送到浏览器。这使用 HTTP 1.1 分块编码。

但是,其中一个块中可能会出现错误(在第一个块已发送之后)。在这种情况下:

  • 您无法重定向(发送Locationheader),因为标头和响应状态已经发送
  • 您无法进行服务器端重定向(转发),因为新页面必须在已发送的部分之后呈现 - 它肯定看起来很难看。

那么在这种情况下你应该做什么呢?我问了一个问题 https://stackoverflow.com/questions/7503447/can-you-set-the-location-header-in-a-chunked-http-response-trailer是否可以在分块预告片中发送 Location 标头,但这是低级 http,语言的抽象可能不允许这样做,即使这是可能的(并且可能不支持跨浏览器)

另一种选择是发送<script>window.href.location="errorPage"</script>从而迫使客户端重定向,但这很丑陋。另外你必须把</script>关闭任何潜在的未关闭的<script>部分页面中的标签。

(我标记了主要的网络语言/框架,因为这是一个普遍的问题)


您无法以分块编码从服务器重定向,因为标头已经发送。执行重定向的唯一方法是发送<script>来自服务器的标记并执行客户端重定向。出于好奇,您是否尝试实现 COMET 服务器?如果是这种情况,与隐藏iframe技术 http://cometdaily.com/2007/11/05/the-forever-frame-technique/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果部分响应已发送(分块),如何将浏览器发送到错误页面 的相关文章