同源策略(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(跨源资源共享)
3、图片ping
4、JSONP