同源策略
同源
同源指的是两个URL地址具有相同的协议、主机名、端口号
例如:下表给出了相对于 http://www.test.com/index.html 页面的 5 个同源检测结果
同源策略
是浏览器提供的一个安全功能,不允许非同源的URL之间进行资源的交互
ajax请求数据要遵循同源策略.
html静态文件 与 接口地址 遵循同源策略,反之就是跨域
跨域
浏览器不允许非同源的URL之间进行交互,所以出现了跨域,
跨域的拦截
浏览器允许发起跨域请求,但跨域请求回来的数据,会被浏览器拦截,无法被页面获取到,
突破浏览器跨域限制的方法:
1、CORS:W3C 官方标准,是真正的 Ajax 请求,支持 GET、POST、PUT、DELETE、PATCH等常见的请求方式,
本质: 服务器在响应添加一个响应头: Access-Control-Allow-Origin: *
2、反向代理:
本质: ajax去自己的服务器要数据,让 自己的服务器 去 第三方的服务器取数据,自己的服务器再返回数据给浏览器。
3.jsonp:只支持 GET 请求,JSONP 不是真正的 Ajax 技术
在实际开发中很少被使用
在面试中可能会问到 JSONP 的原理
本质: 动态的创建script标签,给script标签添加src属性,因为动态的创建script标签发送请求是异步在当前的页面上声明了一个函数,从服务器端返回的是该函数的调用,即使是异步,函数声明中的代码没有执行,当函数调用回来时,函数体中的代码才执行
数据是作为函数调用的实参返回的