从不同的网站检索信息

时间:2012-10-09 09:17:51

标签: javascript same-origin-policy

我正在写一篇项目论文,偶然发现了一个可能使我的整个项目受到质疑的问题。所以我只想在采取任何进一步行动之前进行三重确认。

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

无论我尝试了多少,这都行不通,所以我进行了谷歌搜索,并发现同源政策可能就是原因。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,URL1需要定义mycallback函数,并从URL2

获取信息

另一种方法是利用可以跨域的XMLHttpRequest Level2

另一种方法是通过onmessage / postmessage进行通信,并在URL1的页面中设置URL2。这也是Cross-Origin。

还有其他技术可以在相同的原始政策中制造漏洞,例如哈希(但与上述技术相比非常有限)