自己搭建了两个服务器,分别为192.168.1.100和192.168.1.200
192.168.1.100下index.html内容如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/plain; charset=utf-8" />
<script src="http://192.168.1.200/jquery.js" type="text/javascript"></script>
<script src="http://192.168.1.200/test.js" type="text/javascript"></script>
</head>
<body>
<div id="test">
111111111111111
</div>
</body>
</html>
192.168.1.200下test.js内容如下:
$(function()
{
document.getElementById("test").innerHTML='this is test!!!';
})
然后浏览器访问192.168.1.100/index.html,发现显示“this is test!!!”,根据同源策略,192.168.1.100调用了192.168.1.200的脚本并执行,这不是已经违反了同源策略吗,为什么还会执行成功?
同源策略只对网页的HTML文档做了限制,对加载的其他静态资源如javascript、css、图片等仍然认为属于同源.在浏览器中,、<img>、<iframe>、<link>等标签都可以加载跨域资源,而不受同源限制</p>
浏览器不会对进行跨域检测的,JSONP就是根据这个实现js跨域执行的</p>
抱歉,上面一条评论输入script标签带<>输入时,被屏蔽为空显示了,在标签前面还有一个script标签