iframe - 谷歌嵌入式 iframe 日历没有一致地显示事件
问题描述
我已经为与我合作的公司建立了一个内部网。Intranet 要求用户使用其 Google 帐户登录才能访问。因此,我还使用默认的 iframe 嵌入为 Google 日历设置了嵌入代码,并使用了一些 php 来换出日历以查看用户的电子邮件以向他们显示适当的日历(例如:以 joe 身份登录@gmail.com 将使用 joe@gmail.com 的地址填充日历,而登录为 jill@gmail.com 将使用 jill@gmail.com 的地址填充日历)。
这对大多数人来说效果很好,但是我们在某些浏览器上遇到了一些问题,并且错误非常不一致,这使得故障排除变得困难。此外,当我检查源代码时,正确的电子邮件显示在 iframe 中,因此 php 交换可能不是问题。
示例 1:我在 Windows 10 上使用 Firefox 登录。日历按预期工作。
示例 2:我在 Windows 10 上使用 Chrome 登录。日历显示,但事件不显示。没有给出错误。
示例 3:同事 #1 在 Windows 10 上使用 Chrome 登录。日历按预期工作。
示例 4:同事 #2 在 Windows 10 上使用 Chrome 登录。尽管源代码明确指向他的个人日历,但他得到了“您无权查看一个或多个日历”错误,而他无疑可以访问到(他也在 Google 本身上登录了他的 Google 帐户,因此那里也没有冲突)。
示例 5:我在 Windows 10 上以隐身模式使用 Chrome 登录。日历按预期工作。
示例 6:我在 Windows 10 上使用 Edge 登录。日历在初始登录时工作,但是当我导航到另一个页面时,日历仍然显示,但所有事件都消失了,没有显示错误。这种情况一直存在,直到我再次登录。
示例 7:同事 #3 在 Mac OSX 上使用 Chrome 登录。日历在初始登录时工作,但当她导航到另一个页面时,日历仍然显示,但所有事件都消失了,没有显示错误。这种情况一直持续到她再次登录。(这在她使用的任何浏览器中都是一致的)
示例 8:同事 #4 在 Mac OSX 上使用 Chrome 登录。日历按预期工作。
最终,我只是迷失了从哪里开始搜索这些错误并缩小原因。清除缓存有时似乎有效,有时甚至会导致开始弹出不同的错误。有谁知道是什么导致了这些不一致的错误,以及从哪里开始寻找解决这个问题的方法?
解决方案
将嵌入式 Iframe 日历与其他浏览器一起使用时,这仍然是一个间歇性问题。
以下是针对此问题的一些建议解决方案:
- 清除缓存和 cookie
- 在集成日历之前,请单击Google 日历设置中的自定义按钮,了解如何嵌入您的网站,然后尝试探索。
从这篇github 帖子中,rullzer 提出了一种更简洁的方法来处理 IFRAME 上的 cookie,以便为所有 cookie 迁移到宽松的同站点 cookie。
这只会使 cookie 更加安全。另外,它确保如果您在某个地方嵌入一些公共页面,每个人都会看到完全相同的东西。(因为 IFRAME 不会发送任何 cookie,从而导致真正的“公共页面”呈现)。
推荐阅读
- c# - 对调试的模糊引用
- python - 如何在 Imagemagick 和 Facedetect 中使用 bash 调整合成图像的大小
- android - 用于繁重计算的 WebAssembly + WebView + Javascript 接口?
- triggers - 将最新项目的数据放在触发器名称中
- c# - 在Unity中打破while循环?
- vba - 当从 dll 的线程函数调用其回调函数时,Ms Access 崩溃了
- javascript - Foundation 6 模态闪烁并关闭
- git - 未提交的更改也会在 Git 中推进吗?
- swift - 迅捷!类型运算符
- xml - 在 XSLT 模板中解析多个参数