0

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

然而问题在于,自上月底以来,谷歌发布了一个甚至不会自动重定向的重定向通知。我在事件中创建的链接由 Google 更改,一旦用户单击链接,就会打开一个新选项卡,指向一个页面,其中包含用户必须单击的重定向警告。由于我为用户提供了指向同一网站内的链接,这非常不方便,而且毫无意义。

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

你们知道我该如何绕过这个警告吗?

我的思考过程:

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

  2. 我可以构建自己的 AJAX 日历并使用 Google 的 API 将其与 Google 同步,但由于愚蠢的“功能”毫无意义,这将是大量工作。我喜欢 Google 的日历,我想使用它。

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

我会非常感谢任何帮助。这快把我逼疯了!


使用 Jon Cram 的输入,我创建了一个解析代码并进行调整的 php 脚本。但是我只能让它适用于 html 版本。对我来说没有 AJAX。=(

4

3 回答 3

2

同源策略将阻止从您的域提供的 JavaScript 与从不同域提供的数据进行交互。

因此,您说选项 1 行不通是对的。

正如您所说,相同的原产地政策也适用于选项 3。从您的域提供的 JavaScript 将无法向提供日历代码的任何域发出直接 HTTP 请求。

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

要修改从另一个域提供的代码,您将需要利用某种形式的服务器端进程。

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

于 2009-02-12T15:02:01.120 回答
0

如果它是一个私人内部站点,您可以在所有客户端(如果他们使用 firefox)上安装greasemonkey,并制作一个修复网址的简短脚本。但这仅在原始 url 包含在 google 的 redirecturl 中时才有效。

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

于 2009-02-12T17:29:05.430 回答
0

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

于 2009-02-26T03:16:25.107 回答