gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 15:08:36 24 4
gpt4 key购买 nike

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

但是,其中一个 block 中可能会发生错误(在第一个 block 已发送之后)。在那种情况下:

  • 您不能重定向(发送 Location header ),因为 header 和响应状态已发送
  • 您不能执行服务器端重定向(转发),因为新页面必须在已发送的部分之后呈现 - 它看起来肯定很难看。

那么在这种情况下你应该怎么做呢?我 asked a question您是否可以在分块尾部中发送 Location header ,但这是低级 http,语言的抽象可能不允许它,即使它是可能的(并且很可能不支持跨浏览器)

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

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

最佳答案

您不能以分块编码从服务器重定向,因为 header 已经发送。执行重定向的唯一方法是发送 <script>从服务器标记并执行客户端重定向。出于好奇,您是否正在尝试实现 COMET 服务器?如果是这种情况,与 hidden iframe technique 相比,HTML5 WebSockets 似乎是更好的方式(如果您的目标浏览器当然支持它们) .

关于php - 如果已发送部分响应(分块),如何将浏览器发送到错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7503765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com