同源策略

109 阅读2分钟
  1. 同源策略就是浏览器为了数据安全问题,为了更好的保护开发者而出的一个重要的安全策略,如果两个URL地址的端口,域名,协议相同就是同源。
  2. 如果两个地址中的端口,协议,域名其中一个不相同,就不可以进行资源的交互,浏览器的同源策略目的是为了保护用户的信息安全,为了防止恶意网站窃取用户在浏览器上的数据,如果不是同源的站点,将不能进行如下操作 :
  • Cookie、LocalStorage 和 IndexDB 无法读写
  • DOM 和 Js对象无法获得
  • AJAX请求不能发送
  1. 解决同源策略

    • 在浏览器中,<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以及大数据量的请求,也无法拿到相关的返回头,状态码等数据
        -   无法设置资源访问权限