1.什么是同源策略?
- 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能
- 所谓同源是指: 协议,域名,端口都相同,就是同源, 否则就是跨域
- http://www.baidu.com:80/index.html
协议: http/https/...
一级域名: baiidu.com/itzb.com
二级域名: www/study/edu/...
端口号: 80/3306/...
// 协议+一级域名+二级域名+端口号都相同, 所以同源
http://www.baiidu.com:80/index.html
http://www.baiidu.com:80/detail.html
// 协议不同, 所以不同源, 是跨域
http://www.baiidu.com:80/index.html
https://www.baiidu.com:80/index.html
// 一级域名不同, 所以不同源, 是跨域
http://www.baiidu.com:80/index.html
http://www.itzb.com:80/index.html
// 二级域名不同, 所以不同源, 是跨域
http://www.baiidu.com:80/index.html
http://edu.baiidu.com:80/index.html
// 端口号不同, 所以不同源, 是跨域
2.同源策略带来的影响
- 在同源策略下, 浏览器只允许Ajax请求同源的数据, 不允许请求不同源的数据
- 但在企业开发中, 一般情况下为了提升网页的性能, 网页和数据都是单独存储在不同服务器上的,这时如果再通过Ajax请求数据就会拿不到跨域数据.
3.跨域解决方案
- jsonp
- document.domain+iframe
- location.hash + iframe
- window.name + iframe
- window.postMessage
- flash等第三方插件