页面无法在 Safari 中加载。列出 about:blank 实例的活动窗口



我有一个页面并不总是在Safari中呈现。它显示为空白页。如果我查看"活动窗口",我将在正在加载的资源列表中看到about:black的几个实例。

只需刷新页面即可解决问题。

这可以非常可靠地复制,并且只影响Safari。

以前有人见过这个吗?

我也有同样的问题,也发生在谷歌Chrome上。也许是与Webkit相关的问题?查看页面源代码会发现源代码已正确加载,但在我的情况下,内容div不会被呈现。当我尝试检查元素时,div会显示出来。错误控制台不显示任何内容。我正在努力解决这个问题,如果我成功了,我会汇报的。

编辑:已解决

您的页面是动态生成的吗?我发现,如果发送了Content-Length标头,但其值不正确,Chrome和Safari都可能无法正确呈现页面。我没有明确发送标题,但我们使用的是带有自定义前端的WordPress后端,并包含发送标题的wp-blog-header.php。我将其切换为wp-load.php,以防止发送不必要的头。

除此之外,两种浏览器在开始渲染之前都有接收数据量的限制。Safari的阈值似乎在1 KB左右,Chrome的阈值在2 KB左右。我的页面比这更长,但我怀疑缓存是问题持续存在的原因。

我尝试在页面末尾刷新,但当我开始使用用户空间输出缓冲时(并决定在使用时使用自动压缩),问题才完全解决。现在我的页面的形式是:

<?php ob_start('ob_gzhandler'); ?>
<!-- Static and dynamically generated content -->
<?php ob_end_flush(); flush(); ?>

瞧,在清理了Safari的缓存后,我解决了渲染问题!

已解决

事实证明,问题是页面上的一个控件生成了Javascript,用于在该项目的两个相关站点之间创建跨站点cookie。Safari非常严格地拒绝创建跨站点cookie的尝试,这似乎就是由此产生的行为。

我一删除控件,页面就在Safari中一致呈现。

最新更新