2012-10-09 190 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(但相比之下是非常有限的上述工藝)