我正在写一篇项目论文,并且偶然发现了一个可能使我的整个项目受到质疑的问题。因此,我只想在采取任何进一步行动之前进行三次确认。
我在 URL1 上有一个 javascript 文件。为简单起见,javascript 代码从 URL2 检索信息。
不管我怎么尝试这都行不通,所以我做了谷歌搜索,发现同源政策可能是原因。
所以我再次问你,这不可能吗?
我正在写一篇项目论文,并且偶然发现了一个可能使我的整个项目受到质疑的问题。因此,我只想在采取任何进一步行动之前进行三次确认。
我在 URL1 上有一个 javascript 文件。为简单起见,javascript 代码从 URL2 检索信息。
不管我怎么尝试这都行不通,所以我做了谷歌搜索,发现同源政策可能是原因。
所以我再次问你,这不可能吗?
这是完全可能的,但有一些限制;
如果 URL2 提供 JSONP 方式,您可以从 URL1 访问 URL2 的信息。您将生成一个脚本标记,该标记加载一个 js 文件 (url2/information?id=123&callback=mycallback),其中 JSON 被放入指定的函数(在本例中为 mycallback)。URL2 上的脚本如下所示;
mycallback({"json":"information"});
因此,URL1 需要定义一个 mycallback 函数,并将从 URL2 获取信息
另一种方法是使用可以跨域的XMLHttpRequest Level2 。
另一种方法是通过 onmessage/postmessage 进行通信,并将 URL2 iframed 放在 URL1 的页面中。这也是跨域的。
还有其他技术可以在同源策略中造成漏洞,例如哈希(但与上述技术相比非常有限)