如何解决Google日历的链接重定向通知?

时间:2009-02-12 08:33:25

标签: php javascript ajax xss google-calendar-api

我在网页上嵌入了Google日历,其中包含与网站正在组织的活动相关的活动。某些日历活动具有将用户重定向到同一网站内的页面的链接,该网站包含更多信息以及参加活动的选项。

然而问题是,自上个月底以来,Google实施了一个甚至不会自动重定向的重定向通知。我在事件上创建的链接由Google更改,一旦用户点击链接,就会打开一个新标签页,其中会显示一个页面,其中包含用户必须点击的重定向警告。由于我向用户提供了在同一网站内的链接,这非常不方便,根本没有任何意义。

我希望用户能够点击日历上的链接,然后访问包含相关数据的网页。

你们知道我怎么能绕过这个警告吗?

我的思考过程:

  1. 最初,我想过使用JS来重写链接,但由于日历的iframe位于不同的域中,因为XSS漏洞(AFAIK),浏览器不会允许它。

  2. 我可以使用API​​构建我自己的AJAX日历并与Google同步,但由于愚蠢的“功能”没有任何意义,这是一项很多工作。我喜欢Google的日历,我想使用它。

  3. 我认为第三件事是,我可以使用AJAX来获取框架网址上的整个代码,而不是使用日历的iframe。然后我只用JS重写该代码上的链接。这可行吗?

  4. 我真的非常感谢任何帮助。这让我疯了!


    使用Jon Cram的输入我创建了一个PHP脚本来解析代码并进行调整。但是我只能为html版本工作。对我来说没有AJAX。 =(

3 个答案:

答案 0 :(得分:2)

相同的原始政策会阻止您的域提供的JavaScript与来自其他域的数据进行交互。

因此,你说选项1不起作用是正确的。

同样的原产地政策也适用于您已声明的选项3。从您的域提供的JavaScript将无法向提供日历代码的任何域发出直接HTTP请求。

您需要获取和修改日历代码,使用当今最常用的浏览器使用JavaScript都无法实现。当FireFox 3.1和IE8常用时, Google提供正确的HTTP访问控制标头,这可以通过JavaScript单独实现。

要修改从其他域提供的代码,您需要使用某种形式的服务器端进程。

服务器端脚本将能够请求日历代码。然后,相同的脚本可以根据需要修改代码,并以您需要的任何形式输出。

答案 1 :(得分:0)

如果是私人内部网站,您可以在所有客户端上安装greasemonkey(如果他们使用firefox)并制作一个修复网址的简短脚本。这只适用于原始网址包含在谷歌的重定向中的情况。

如果我遇到这个问题,我会更换日历提供商,这可能是最简单的解决方案。我做了谷歌搜索并找到Kiko,看起来他们可能有你需要的东西?

答案 2 :(得分:0)

只需删除网址的“http://”部分即可。我不确定为什么会这样,但确实如此!