2014-09-06 90 views
1

這對其他人來說顯然是顯而易見的,但對於我的生活,我無法弄清楚。爲什麼w3schools的這個JQuery.get例子不適合我?

我已經複製從http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_get

的HTML我改變了一行略微使不用彷徨URL指向全w3schools.com URL(這只是正常的例子頁)。這是代碼:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
    $.get("http://www.w3schools.com/jquery/demo_test.asp",function(data,status){ 
     alert("Data: " + data + "\nStatus: " + status); 
    }); 
    }); 
}); 
</script> 
</head> 
<body> 

<button>Send an HTTP GET request to a page and get the result back</button> 

</body> 
</html> 

此代碼工作得很好,我W3Schools的網站上,但是當我把它粘貼到一個名爲「hi.html」我家電腦上的新文件,並在Chrome中打開它,並Firefox,它失敗了。

我直接複製並粘貼這個html,爲什麼會失敗?

+2

必須是CORS(跨源資源共享)問題。查看此鏈接以獲得更好的理解:http://www.html5rocks.com/en/tutorials/cors/ – Satya 2014-09-06 04:59:34

回答

3

由於同源策略(https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy),您的Web瀏覽器可防止Ajax請求執行。基本上,當您在localhost:80上運行腳本時,您只能對localhost:80上的頁面發出Ajax請求。 W3School位於不同的主機上。

出於安全原因存在同源策略。例如,假設您已登錄到Facebook。如果同源策略不存在,程序員可以創建一個惡意網站,向Facebook.com發出Ajax請求,並且它將返回您的登錄Cookie。然後它可以將您的登錄cookie發送給惡意程序員。然後,惡意程序員可以將您的登錄cookie和模擬您的Facebook。