- 同源策略就是浏览器为了数据安全问题,为了更好的保护开发者而出的一个重要的安全策略,如果两个URL地址的端口,域名,协议相同就是同源。
- 如果两个地址中的端口,协议,域名其中一个不相同,就不可以进行资源的交互,浏览器的同源策略目的是为了保护用户的信息安全,为了防止恶意网站窃取用户在浏览器上的数据,如果不是同源的站点,将不能进行如下操作 :
- Cookie、LocalStorage 和 IndexDB 无法读写
- DOM 和 Js对象无法获得
- AJAX请求不能发送
-
解决同源策略
- 在浏览器中,
<script>、<img>、<iframe>、<link>等标签都可以跨域加载资源,而不受同源策略的影响。这些带“src”的标签每次加载的时候,实际上是向浏览器发送了一次GET请求。同时src属性加载的资源,浏览器限制了JavaScript的权限,时期不能读、写返回的内容。 - jsonp(JSON with Padding),是JSON的一种 “使用模式”,可以让网页跨域读取数据,其本质是利用script标签的开放策略,浏览器传递callback参数到后端,后端返回数据时会将callback参数作为函数名来包裹数据,从而浏览器就可以跨域请求数据并制定函数来自动处理返回数据。
` function callback_12server(response) {console.log('process 12-server msg'); for(var i=0; i<response.length; i++){ console.log("姓名:"+response[i].uname); console.log("邮箱:"+response[i].uemail); } } $(function () { $("#btnCross").click(function () { // 访问http://127.0.0.1:5000/12-cross // 请求http://0.0.0.0:5000/12-server var script = document.createElement("script"); // 创建script元素(标签) script.type = "text/javascript"; script.src = "http://0.0.0.0:5000/12-server?callback=callback_12server"; $("body").append(script); }); });`-
jsonp优点: 兼容性强可以适用于所有浏览器
- 缺点: - 没有关于调用错误的处理 - 只支持GET请求,不支持POST以及大数据量的请求,也无法拿到相关的返回头,状态码等数据 - 无法设置资源访问权限
- 在浏览器中,