对于其他人来说这是显而易见的,但对于我的生活,我无法理解。
我已经从http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_get
复制了HTML我稍微更改了一行,以便.get url指向完整的w3schools.com网址(这在他们的示例页面上工作得很好)。这是代码:
<!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,为什么会失败?
答案 0 :(得分:3)
由于同源策略(https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy),您的Web浏览器会阻止执行Ajax请求。基本上,当您在localhost:80上运行脚本时,您只能对localhost:80上的页面发出Ajax请求。 W3Schools在不同的主持人。
出于安全原因,存在同源政策。例如,假设您已登录Facebook。如果不存在同源策略,程序员可以创建一个恶意网站,为Facebook.com发出Ajax请求,并返回您的登录cookie。然后,它可以将您的登录cookie发送给恶意程序员。然后,恶意程序员可以使用您的登录cookie并在Facebook上冒充您。