Safari 17.0 丢失 window.open 和 window.print 上的会话数据

问题描述 投票:0回答:1

我运营一个网站,人们可以在其中打印文档(php/html/javascript)。

最新的 Safari 更新(Mac Sonoma、Safari V17.0)后,Safari 打开新选项卡后,打印窗口会丢失会话 cookie。

如何重复:

  1. 创建一个html文档./index.php,其中有一个带有

    onclick="window.open('./anyfolder/printpage.php', '_blank');
    的按钮 在此设置会话 cookie。

  2. 在 printpage.php 中添加带有

    onclick="window.print();"
    的打印按钮。

  3. 单击index.php 上的按钮。 Printpage.php 在新选项卡中打开。 Cookie 仍然存在。

  4. 单击 printpage.php 上的打印按钮。 Safari 打印窗口打开。等几秒钟。现在 Cookie 丢失了。

在任何其他浏览器上都不会发生。在 Safari 打印窗口打开之前,也不会发生这种情况。

如果您在单击 window.print 之前将打开的 printpage.php 选项卡拖到新窗口中,则会话 cookie 不会丢失。此外,如果您创建一个在新选项卡中打开 printpage.php 的表单,会话也不会丢失。

这个问题有解决办法吗?

我将同一个站点的 cookie 参数设置为“宽松”。

javascript php html safari
1个回答
0
投票

我尝试重现该行为,但失败了。 - 版本 17.0 (19616.1.27.211.1) - Apple M1

index.php

<?php
session_start();
?>
<button onclick="window.open('./printpage.php', '_blank');">Print preview</button>

printpage.php

<?php
session_start();
?>
<button onclick="window.print();">Print</button>

然后在我的浏览器中打开index.php(通过网络服务器)->单击第一个按钮->单击第二个按钮。会话 cookie 保持不变。

请使用我的确切代码示例重试,只是为了验证 Safari 中没有需要报告的错误。

© www.soinside.com 2019 - 2024. All rights reserved.