源 = 协议+域名+端口号, 两个源相同称之为相同, 两个源不同,称之为跨源或者跨域
同源策略是指,若页面中的源和页面运行过程中加载的源不一致时, 出于安全考虑, 浏览器会对跨域的资源 访问进行一些限制
同源策略对ajax的限制最为严格, 默认情况下不允许ajax访问跨域资源
常用解决跨域的问题
- 代理
对于前端开发者而言, 大部分的跨域问题都是通过代理解决的 代理应用的场景: 生产环境不跨域, 但开发环境发生跨域 因此只需要开发环境使用代理解决跨域问题即可
- cors
他的总体思路就是如果浏览器需要跨域请求服务器资源, 需要获取服务器允许 服务端
- jsonp
jsonp的具体做法是:当需要跨域请求时, 不使用ajax,转而生成一个script元素去请求服务器, 由于浏览器并不会阻止script元素的请求, 这样请求可以到达服务器。服务器拿到请求后, 响应一段js代码, 这段代码实际上是一个函数调用, 调用的是客户端预先生成的函数, 并把浏览器需要的数据作为参数传递到函数中, 从而间接的把数据传递给客户端
jsonp 只能支持get请求