1. 什么是同源策略
- 同源指的是网页的协议、域名和端口都相同,不同源的客户端脚本在没明确授权的情况下,不能读写对方的资源。
- 同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。
- 随着互联网的发展,现主要有三种行为受到同源策略的限制:
- Cookie、LocalStorage 和 IndexDB 无法读取。
- DOM 无法获得。
- AJAX 请求不能发送。
URL | 说明 | 是否允许通信 |
---|---|---|
http://www.a.com/a.js http://www.a.com/b.js |
同一域名下 | 允许 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同端口 | 不允许 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 不允许 |
http://www.a.com/a.js http://a.com/b.js |
同一域名,不同二级域名(同上) | 不允许 |
http://www.cnblogs.com/a.js http://www.a.com/b.js |
不同域名 | 不允许 |
2. 什么是跨域,跨域有几种实现形式?
- 跨域:为了获取不同源网页上的图片、脚本等资源,我们就需要跨域了。
- 跨域的方式
- JSONP
- CORS
- WebSocket
- postMessage
- window.name
- document.domain
3. JSONP 的原理是什么?
- JSONP即 JSON with padding(填充式JSON或参数式JSON),是被包含在函数调用中的JSON,如
callback({ "name": "xiaoming"})
。 - JSONP是通过动态