关于同源策略的理解

0x00000001.首先让我们明确一下相关概念:

	源:源即是协议、域名和端口号。
		如:https://blog.csdn.net/zzy2210:8080 就是一个源
	同源:即源相同,源也就是说只要协议、域名、端口号相同便属于同源。
		如:对于https://blog.csdn.net/zzy2210 
					   http://blog.csdn.net/zzy2210 		    不同源,因为协议不同
					   https://blog.csdn.net/zzy2210:1080 不同源,因为端口不同
					   https://blog.csdn.net/zzy9001			同源
					   https://blog.net/zzy2210					不同源,因为域名不同
	同源策略:同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。
	即www.baidu.com下的js脚本在无授权的情况下,读取blog.csdn.net/zzy2210:8080 是会报错的。
	

0x00000002 例外的IE

在同源策略,ie 主要有两个不同点:
  • 授信范围:(Trust Zones):两个相互之间高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。
  • 端口:IE 未将端口号加入到同源策略的组成部分之中,因此 http://company.com:81/index.html 和 http://company.com/index.html 属于同源并且不受任何限制。

0x00000003 跨域

以下知识我并未完全掌握,将慢慢补充
 跨域,是不同源脚本操作其他源下的对象所需要的。
跨域的实现形式有:
	1.降域(双向跨域)document.domain
	同源策略认为域和子域不是同一个域,但是可以通过
document.domain

这个命令来使域与子域同源。
如:
main.com与child.main.com并不同源,
但是在child.main.com中设置document.domain = 'main.com’即之由子域改为主域
2.JSOP跨域(单向跨域)
NULL
3.Ajax跨域(CORS)
NULL
4.window.postMessage(双向跨域)
NULL
5.window.name
NULL
6.location.hash
NULL
7.跨域内嵌的资源
这一点其实是因为页面中的链接、重定向以及表单提交是不会受同源策略限制。
如:

a.标签嵌入脚本。
b.标签嵌入CSS。
c.嵌入图片。
d.