同源策略限制从一个源(协议,域名和端口(端口默认为80))加载的文档或脚本如何与来自于另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的安全机制。
那么具体有什么限制呢?
- Cookie、LocalStorage和IndexDB无法读取
- DOM无法获得
- AJAX请求不能发送
前后端通信的方法
- Ajax(必须同源)
- WebSocket(不限制同源策略)
- CORS(支持跨域也支持同源)
如何创建Ajax
注意几点
- XMLHttpRequest对象的工作流程
- 兼容性的一些处理
- 事件触发顺序
- 事件触发条件
1 | var xmlhttp = null; |
跨域通信的方式
- JSONP
出现CORS之前,一直使用JSONP,原理是通过动态向客户端添加一个script元素,向服务器请求数据,在请求的url中添加serach字段,指定回调函数名字,服务器收到请求后,会将数据放在指定名字的回调中传回来。 - Hash(#后面的东西,改变不刷新页面)
原理是hash后面的东西改变不刷新页面,主要用在内嵌iframe的父子窗口之间的通信 - postMessage(h5新增)
创建目标窗口的window对象,然后通过该对象的postMessgae方法传递数据,最后目标窗口通过监听message事件接收数据。 - WebSocket
初始化websocket对象,设置监听事件,onopen,onmessage和onclose事件。 - CORS(变种的Ajax,加一个origin头允许通信,需要服务器的配置,通过认知发送请求来的头部的origin)
fetch的api
2018 年 1月 9日