跨域

作者: 该昵称注册中 | 来源:发表于2018-03-06 18:20 被阅读0次

    跨域

    什么是跨域:

    1.) 资源跳转: A链接、重定向、表单提交
    2.) 资源嵌入: <link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链
    3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等
    非同源的及为跨域
    同源是指 == 》 协议+域名+端口 都相同,即便两个不同的域名指向同一个ip地址也非同源
    同源限制了一下几种行为:
    1:cookie.LocalStoage和indexDB无法读取
    2:DOM和JS对象无法获得
    3:ajax请求不能发送
    协议     域名         端口  不管这后面怎么变只要前三个相等就不是跨域
    http://www.domain.com:8080/a.js
    

    解决跨域

    通过jsonp

    原理:在页面引入跨域js和css时,没有存在跨域问题.因此可以动态创建script实现跨域

     <script>
        var script = document.createElement('script');
        script.type = 'text/javascript';
    
        // 传参并指定回调执行函数为onBack
        script.src = 'http://www.domain2.com:8080/login?user=admin&callback=onBack';
        document.body.appendChild(script);
    
        // 回调执行函数
        function onBack(res) {
            alert(JSON.stringify(res));
        }
     </script>
    

    jQuery ajax

    $.ajax({
      url:"http://www.domain2.com:8080/login",
      type:"get",
      data:{}
      dataType:'jsonp',
      jsonpCallback:'onBack',
      success:function(data){}
    })
    

    vue.js

    this.$http.jsonp('http://www.domain2.com:8080/login', {
        params: {},
        jsonp: 'onBack'
    }).then((res) => {
        console.log(res); 
    })
    

    具体请看https://segmentfault.com/a/1190000011145364

    补充一个 form表单提交是不需要进行跨域处理的 但是要转到一个空白页面进行处理 可以用iframe 进行接收 不进行页面跳转

    相关文章

      网友评论

        本文标题:跨域

        本文链接:https://www.haomeiwen.com/subject/vsurfftx.html