8

我正在尝试在我网站的另一个子域上发布应用程序的登录表单。这是我没有源访问权限的第三方应用程序。

我知道由于同源策略,您无法访问跨域 iframe 的大多数功能。然而,我需要访问的是在 iframe 中被重定向到(通过 JavaScript)的 URL。它有一个我想通过的会话令牌。

这似乎是允许的足够安全的事情,但我还没有找到一种方法来做到这一点。我正在使用 jQuery,并且我已经尝试过$('iframe').contents(),但我似乎对该对象根本没有权限。我也检查了$('iframe').attr('src'),但它仍然是预重定向 URL。还有其他方法吗?

4

2 回答 2

11

不,您无权访问 iframe 中的任何属性。您只能访问外部定位和样式属性。

这就是为什么使用框架是如此痛苦的原因。我通常只在我不在乎它们里面做了什么的时候才使用它们。

你不能做服务器端身份验证和令牌传递吗?您可以不在您的服务器上执行此操作,而不是让客户端进行身份验证吗?您可能需要做一些额外的工作来创建 HTTP 请求并解析响应,但可以避免任何 iframe 问题。

底线是 iframe 可能不是最好的依赖(尤其是在跨浏览器功能方面)用于身份验证等重要事情。

于 2009-05-02T19:29:01.667 回答
2

试试这个例子(方法 2),作者在第一个 iframe 中设置了另一个 iframe,在原始域中加载页面。允许内部页面调用外部父级上的 javascript,因为它们加载在同一个域中。只需使用适当的参数加载内部页面,这些参数可以传递给父级。

于 2009-06-01T16:56:36.017 回答