如果在網站http://www.mysite.com
有一個外部JS文件添加爲同源策略文件
<script src="http://www.yoursite.com/new.js"></script>
的http://www.yoursite.com/new.js
js文件中,有一個在這樣一個AJAX調用的腳本在http://www.yoursite.com/new.js
一個案例會出現同源策略安全問題,因爲它正在從另一個網站調用站點中的腳本?
如果在網站http://www.mysite.com
有一個外部JS文件添加爲同源策略文件
<script src="http://www.yoursite.com/new.js"></script>
的http://www.yoursite.com/new.js
js文件中,有一個在這樣一個AJAX調用的腳本在http://www.yoursite.com/new.js
一個案例會出現同源策略安全問題,因爲它正在從另一個網站調用站點中的腳本?
會出現問題。 new.js
運行在mysite.com
的範圍內,而不是yoursite.com
。
編輯:更詳細的解釋是:當mysite.com打開標籤時,該腳本運行在當前頁面的範圍內。腳本的來源並不重要:它可以是內聯,本地源或遠程源,它仍然被認爲是mysite的一部分。
如您所知,由於相同的原產地策略,mysite.com中的腳本無法訪問yoursite.com上的任何內容。所以你不能這樣做。
作爲跨源通信的高級選項,請看jsonp。這將需要yoursite.com提供特殊處理,但是如果您在兩個網站都有控制權,那麼這應該不成問題。
JSONP恰恰是你在找什麼:http://en.wikipedia.org/wiki/JSON
的5000米概述是JSONP使用請求外部腳本,你正在使用上述相同的機制。區別在於你的服務器會識別這個,並將JSON響應打包爲回調方法的參數。當你的網站收到這個'腳本'時,它會執行它,從而將數據直接返回到你的回調方法中。
如果你能夠使用像jQuery這樣的框架,大多數客戶端將會被透明地處理。看看這裏:http://api.jquery.com/jQuery.getJSON/
in blog.timothyfisher.com/?p=277有一句話 - >「跨域限制意味着您只能從瀏覽器返回到JavaScript所服務的域名。」所以我懷疑外部JavaScript文件上的腳本是否可以訪問js文件所在的站點,即使它運行在不同的網站上。 – Anish 2010-09-07 17:33:45
@ anish-m。我不確定我是否理解你所說的內容,但我可以向你保證(因爲我已經做了很多次),使用JSONP你可以有效地向/從/接收數據(包括任意對象等)一個第三方服務器。這(非常)有效地解決了XMLHttpRequest受限制的同源策略(http://www.w3.org/TR/XMLHttpRequest/)。 – mkoistinen 2010-09-07 22:20:15
你的請求可以解釋... – Anish 2010-09-06 12:23:57
加入我能提供最好的解釋.. – 2010-09-07 11:22:36
感謝在http://blog.timothyfisher.com/?p=277解釋兄弟 – Anish 2010-09-07 17:29:02