将cookie设置为iframe src

时间:2014-04-04 14:51:58

标签: javascript jquery html iframe cookies

我有一个加载外部页面的iframe,需要记录才能显示我想要的内容。实际上,如果我以正常方式设置iframe,iframe将加载外部域登录页面。我实际拥有的是这样的:

我需要做的是为该源设置一些cookie,以假装外部域我被“记录”。可以这样做(或者我认为可以做到这一点)是将请求设置为登录响应给我的cookie。

我实际上可以获取这些Cookie,但不知道如何将它们设置为iframe中的网址。

思想?

谢谢!

1 个答案:

答案 0 :(得分:5)

如果iframe位于单独的域中,则无法通过其他域中的javascript直接访问iframe,因此您无法使用javascript直接将Cookie从domain1转移到domain2。

如果你控制两个域中的代码,那么有一些解决方法。这是一种使用单个地点登录的方法,登录凭据通过网址参数传输:Cross Domain Login - How to login a user automatically when transferred from one domain to another

您可以通过登录第一个域然后在iframe中设置.src URL以在URL中拥有登录凭据来使用URL传输机制。当第二个域加载到iframe中时,它会在URL中看到登录凭据,抓住它,将其转换为它自己编写的cookie值以及刷新本身(因此现在看起来已登录)。您显然需要控制两个域中的javascript以使用这些技术中的任何一种,因为一个域的javascript无法直接将Cookie放入其他域。

两个合作域可以通信的另一种方式是使用window.postMessage(),因此可以将登录凭据发送到iframe窗口。它的javascript必须收到消息并将其转换为cookie然后刷新它的页面,以便服务器在第二个域上看到登录cookie。