• 同源策略与跨域处理


    同源策略
    > 原理: 协议、域名、端口都相同
    > 目的: 保证用户信息安全,防止恶意网站窃取信息
    > 限制: 非同源不能访问
    > - cookie、localStorage、webSql、indexDB,
    > - DOM无法获取
    > - Ajax请求不能发送
    > 没有限制: 内部的表单没限制

    同源例子

    [http://www.example.com/dir/page.html] 默认80端口
    http://www.example.com/dir2/index.html 同源
    http://example.com/dir2/index.html 不同源(二级域名与一级域名不属于同源,域名不同)
    http://v2.example.com/dir2/index.html 不同源(域名不同)
    http://www.example.com:8081/dir/other.html 不同源(端口不同)
    https://www.example.com/dir/page.html 不同源(协议不同)

    如何设置同源策略?

    【前端方式】- 很少使用
    ----------- test.xxx.com/a.html ----------------
    <script>
    document.domain = "test2.xxx.com";//设置同源策略
    document.cookie = "test1=hello";
    </script>
    ----------- test2.xxx.com/b.html ----------------
    <script>
    console.log(document.cookie)
    </script>
    【后端方式】- 常用
    Set-Cookie: key=value;domain=test2.xxx.com;path=/

    跨域实现的几种方式
    > jsonp: 利用script标签跨域请求,用callback实现

    <script src="http://xxx.com/index.php?callback=test"></script>
    <script>
       function test(data){console.log(data);}
    </script>
    //jquery
    $.ajax({
       type: 'jsonp',
       success: function(data){
          //jquery自动隐式创建了一个test方法
       }
    })

    > CROS
    > 反向代理
    > websocket
    > postMessage
    > img: 是文件协议(不在同源策略中,因此可以访问)

    //测试一下手机网速,根据网速,可以给用户出一些网速较慢的解决方案:直接跳转到简版 s.gif = 1kb
    var s = new Image();
    var start = Date.now();
    s.src = "http://www.xxx.com/s.gif";
    s.onload = function(){
       var end = Data.now();
       var t = end - start;
       v = 1kb / t;// 算出 kb/s
       var level = 10 - Math.floor(v / 100);//根据网速进行分级
       //根据分级来处理你想干的事情
    }

    把代码压缩成图片

    > link: css可以跨域
    > iframe:(不在同源策略中,因此可以访问)
    > script标签(不在同源策略中,因此可以访问)

  • 相关阅读:
    flowable ui 界面请假流程操作实例
    访谷歌看油管 这里有你想要的!!!
    Termux中使用数据线传输文件
    Vue中使用ECharts图表展示数据
    vue项目使用阿里图标库图标
    linux下使用命令行查看天气预报情况
    在博客或者其他Html页面新增浮动音乐播放器
    Vue实现弹窗拖动放大缩小
    分享一个IDEA 免费注册码分享站点
    远程命令执行之------电脑自动执行页面输入的指令
  • 原文地址:https://www.cnblogs.com/xfz1987/p/7812165.html
Copyright © 2020-2023  润新知