2012-10-09 158 views
1

我写了一篇项目论文,并且偶然发现了一个可能使我的整个项目存在疑问的问题。所以我只是想在我采取进一步行动之前进行三重确认。从其他网站获取信息

我在URL1上有一个JavaScript文件。为了简单起见,JavaScript代码从URL2中检索信息。

无论我多么努力,这都不起作用,所以我做了一次Google搜索,发现同源策略可能是原因。

所以我再次问你,这是不可能的吗?

+1

这不是完全不可能,但URL2必须支持跨源资源共享:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing – nhahtdh

+0

或者您可以从服务器端aswel获取信息。 –

+0

@ChandraSekharWalajapet,在服务器端,你的意思是URL1从URL2检索信息并将其解析为javascript。如果是这样,那现在不是一个选项。我会先问我的主管。 – RedHotScalability

回答

0

这是完全可能的,但有一些限制;

如果URL2提供JSONP方式,则可以从URL1访问URL2的信息。您将生成一个脚本标记,用于加载将JSON放入指定函数(本例中为mycallback)的js文件(url2/information?id = 123callback = mycallback)。 URL2上的脚本看起来像这样;

mycallback({"json":"information"}); 

因此,URL1需要限定的myCallBack函数函数和将得到URL2

的信息的不同的方法是利用XMLHttpRequest Level2可去跨域。

另一种方法是通过onmessage/postmessage进行通信,并在URL1的页面中设置URL2 iframed。这也是跨越原点。

还有其他一些工艺,使在同一起源的政策一个洞,就像Hashs(但相比之下是非常有限的上述工艺)