将cookie设置到iframe的src中

9
我有一个iframe加载外部页面,需要登录才能显示我想要的内容。实际上,如果我按照正常方式设置iframe,它会加载外部域登录页面。我现在的情况是这样的:
我需要做的是为该源设置一些cookie以假装我已经"登录"了外部域。可以通过将登录响应给我的cookie设置到请求中来完成此操作(或者我认为可以完成此操作)。
我其实已经能够获取这些cookie,但不知道如何将它们设置到iframe的URL中。
有什么想法吗?
谢谢!

您无法访问第三方网站。想一想,如果您登录银行/电子邮件,其他网站可以获取您的登录信息,这是明智的吗?如果您控制两个域,那么有些事情您可以做到。 - epascarello
1
真正的想法是...另一方面,我的流程大致如下:我使用一个帐户通过“静默”API(不在任何视图中显示)登录到另一个域,并使用该登录提供给我的cookie来显示我最近登录的该域的某个页面。对我来说似乎并不那么非法。 - FabKremer
1
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript - epascarello
1个回答

14
如果iframe在另一个域上,您将无法通过javascript直接从其他域访问它,因此您将无法使用javascript直接将来自domain1的cookie传输到domain2。
如果您控制两个域中的代码,则有一些解决方法。以下是一种方法,它使用单个位置进行登录,并且登录凭据通过URL参数传递:跨域登录 - 如何在转移到另一个域时自动登录用户 您可以通过在第一个域上登录,然后将iframe中的.src URL设置为URL中具有登录凭据来使用URL传输机制。当iframe中加载第二个域时,它将在URL中看到登录凭据,获取它,将其转换为cookie值并将其写入自身并刷新(因此现在看起来已登录)。显然,您需要控制两个域中的javascript才能使用这些技术之一,因为一个域的javascript不能直接将cookie放入另一个域中。
两个合作域之间通信的另一种方法是使用window.postMessage(),以便可以将登录凭据发送到iframe窗口。它的javascript必须接收消息并将其转换为cookie,然后刷新它的页面,使服务器在第二个域上看到登录cookie。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接