了解浏览器的安全机制-同源策略
同源策略是一种共识,是浏览器最核心的部分,web是构建在同源策略基础之上的,他限制了来自不同源的脚本或document 对当前document读取或设置某些属性,浏览器提出“Orign”的概念,来自不同Orign的对象无法互相干扰
url | 是否同源 | 原因 |
http://www.fang.com/a | 对比基准 | |
http://www.fang.com/b | 是 | |
https://www.fang.com/c | 不是 | 协议不同 |
http://www.fang.com:81/d/ | 不是 | 端口不同 |
http://www1.fang.com/e | 不是 | 域名不一样 |
影响源的因素:host 子域名 端口 协议
如果 www.fang.com 通过以下的代码
<script src=http://img.fang.com/b.js ></script>
加载了img.fang.com 上的b.js 但是 b.js 是运行在www.fang.com 上的,那么对于当前页面来说 b.js 的 orign就应该是www.fang.com 而不是 img.fang.com
<script><img><iframe><link>等标签都已跨域加载资源,而不受同源策略的影响,浏览器限制了这些资源的javascript 的权限,使其不能读、写返回的内容。
XMLHttpRequest 也可以跨域访问,但是必须通过目标与返回http 头 来授权是否允许跨域访问。
Flash 是通过目标站点的crossdomain.xm 来判断当前的源是否能跨域访问