如何解决这个奇怪的跨域问题?

时间:2011-09-14 18:33:10

标签: javascript cookies iframe cross-domain

基本上我的应用程序位于社交网络中,在我的应用程序页面中,他们创建了一个iframe,其中包含“renderer”的(不是我的)URL,然后我的代码需要(不要询问) (html,js)并放置在此iframe的body标记中。

由于我需要能够运行iframe的JavaScript函数,所以我决定不使用我的应用程序URL创建另一个iframe,但是使用ajax调用只需将我的应用程序的内容加载到iframe的主体中。这样我就可以运行他们的JavaScript函数。如果我要在他们的iframe中创建我的iframe,那么由于跨域的内容我无法运行它们,对吗?

然而,当我使用jQuery对我的应用程序执行ajax调用时,它们是从社交网络执行的(因为iframe是他们的,只是我的正文代码),因此我的应用程序域中保存的会话cookie不可用于ajax来自此iframe的电话。

我认为我需要在社交网络的iframe中创建iframe( dooh ),但如何克服跨域问题来访问父iframe中的JavaScript函数?

P.S。很抱歉很长的解释。想要让每个人都清楚。

1 个答案:

答案 0 :(得分:1)

无法从其他域读取Cookie。

AJAX失败是因为您正在使用XHR并且被Same Origin Policy阻止。或者,您正在使用JSONP,并且未设置cookie。

如果您使用的是XHR,请切换到JSONP

使用JSONP您将无法设置Cookie。 JSONP只是通过设置脚本标记的src来加载脚本,并且不能以这种方式设置cookie(不要忘记它们不能从另一个域设置)。

您必须通过为每个JSONP请求传递会话ID来手动管理状态。