2010-09-06 200 views
3

如果在網站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

一個案例會出現同源策略安全問題,因爲它正在從另一個網站調用站點中的腳本?

回答

4

會出現問題。 new.js運行在mysite.com的範圍內,而不是yoursite.com

編輯:更詳細的解釋是:當mysite.com打開標籤時,該腳本運行在當前頁面的範圍內。腳本的來源並不重要:它可以是內聯,本地源或遠程源,它仍然被認爲是mysite的一部分。

如您所知,由於相同的原產地策略,mysite.com中的腳本無法訪問yoursite.com上的任何內容。所以你不能這樣做。

作爲跨源通信的高級選項,請看jsonp。這將需要yoursite.com提供特殊處理,但是如果您在兩個網站都有控制權,那麼這應該不成問題。

+0

你的請求可以解釋... – Anish 2010-09-06 12:23:57

+0

加入我能提供最好的解釋.. – 2010-09-07 11:22:36

+0

感謝在http://blog.timothyfisher.com/?p=277解釋兄弟 – Anish 2010-09-07 17:29:02

0

JSONP恰恰是你在找什麼:http://en.wikipedia.org/wiki/JSON

的5000米概述是JSONP使用請求外部腳本,你正在使用上述相同的機制。區別在於你的服務器會識別這個,並將JSON響應打包爲回調方法的參數。當你的網站收到這個'腳本'時,它會執行它,從而將數據直接返回到你的回調方法中。

如果你能夠使用像jQuery這樣的框架,大多數客戶端將會被透明地處理。看看這裏:http://api.jquery.com/jQuery.getJSON/

+0

in blog.timothyfisher.com/?p=277有一句話 - >「跨域限制意味着您只能從瀏覽器返回到JavaScript所服務的域名。」所以我懷疑外部JavaScript文件上的腳本是否可以訪問js文件所在的站點,即使它運行在不同的網站上。 – Anish 2010-09-07 17:33:45

+0

@ anish-m。我不確定我是否理解你所說的內容,但我可以向你保證(因爲我已經做了很多次),使用JSONP你可以有效地向/從/接收數據(包括任意對象等)一個第三方服務器。這(非常)有效地解決了XMLHttpRequest受限制的同源策略(http://www.w3.org/TR/XMLHttpRequest/)。 – mkoistinen 2010-09-07 22:20:15