同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。
示例:来自http://blog.csdn.net/JavaScript/a.html的js脚本访问下列url的结果和原因
URL
结果
原因
http://blog.csdn.net/JavaScript/a.html
成功
同源
http://blog.csdn.net/Jquery/b.html
成功
同源
https://blog.csdn.net/HTML/c.html
失败
协议不同
http://blog.csdn.net:8081/CSS/d.html
失败
端口不同
http://www.iteye.com/AngularJs/e.html
失败
主机名不同
下面列举四种方法解决同源策略的问题:
1.某两个具有相同的一级域名的二级域(如www.wrox.com和p2p.wrox.com)下的页面之间的互相访问 document对象引进了一个属性叫domain,通过将这个属性设置成指向同一个域名可以满足上面的需求,例如将www.wrox.com页面中的document.domain设置为:
document.domain=wrox.com; p2p .wrox.com页面中的document.domain设置为: document.domain=wrox.com; www.wrox.com 和p2p .wrox.com之间就可以通信了。2、CORS(跨源资源共享)
JavaScript:CORS(跨源资源共享)
3、图片ping
JavaScript:图像ping
4、JSONP
JavaScript:JSONP