我有一个页面,其中包括“添加到日历”链接。这些下载Icalendar(.ics)事件。这是一个旅行情况,因此可以有两个事件(出境和返回旅程),每个事件都作为单独的下载提供。
如果我点击一个(例如出站),它会下载并提供打开。我这样做,然后点击保存到日历,它将它添加到我的日历。到现在为止还挺好。然后我点击另一个(返回)然后下载,但是当我打开它时,它会打开已保存的出站事件而不是返回的新事件。因此,错误的数据和我没有选择保存它(因为事件已经存在)。
iPhone(Safari浏览器)和Android手机(Chrome)都会发生这种情况。桌面上没有问题。关闭日历应用程序没有帮助。
只有当我将第一个事件添加到日历中时才会发生 - 如果我只是在没有保存的情况下回来就没有问题。如果我尝试出站或首先返回并不重要,添加到日历中的第一个接管!如果我从日历中删除它,我可以添加另一个。
每个都有一个文件名,其中包含Content-Disposition标头中给出的路由(因此出站和返回具有不同的文件名)。我还确保始终使用新副本。完整的标题(在回显ics文件的内容和死亡之前)是:
header( 'Cache-Control: no-cache, must-revalidate', true ); // HTTP/1.1
header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT', true ); // Date in the past
header( 'Content-Type: text/calendar; charset=utf-8', true );
header( 'Content-Disposition: attachment; filename="' . $filename . '"', true );
header( 'HTTP/1.0 200 OK', true, 200 );
此时我有点想法。
答案 0 :(得分:0)
行。事实证明手机是正确的,前景是错误的。后端重新使用电子邮件地址作为UID,因此所有事件都具有相同的UID ...
我已经修复了后端代码,现在使用更合理的UID。它的工作原理