JavaScript 同源策略
概念:同源策略是客户端脚本(尤其是JavaScript)的重要安全度量标准。其目的是防止某个文档或脚本从多个不同源装载。
同源指的是:协议,域名(包括子域名),端口相同。同源策略是一种安全协议。
具体表现在JS中:一段脚本自能读取来自同一来源的窗口的文档和属性。(iframe.contentDocument 等访问错误)
为什么要有同源限制?
如果没有同源策略,黑客通过iframe伪造一个网银登录界面,在父页面上直接获取iframe里面输入框的值。就能完成窃取账号密码的侵入行为。
什么是跨域
浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对js实施的安全限制
跨域的一些方案
1、document.domain
2、通过iframe嵌入页面
3、修改两个页面的 document.domain 为相同的主域(适用于主域相同,子域不同的页面通信,修改domain只能修改为自身或更高一级)
4、两个页面的 JavaScript通过对应的方法和属性访问彼此的元素和属性
5、jsonp
6、本地提供需要执行的方法
7、动态加载 script 提供callback参数
8、动态请求 script,服务端塞入数据 jsonp(json with padding)
9、请求完的 script 在页面上执行(已塞入远端数据)
10、window.name (个人感觉使用 window.name 跨域的方式比较鸡肋,一定是我打开的方式不对吧)