美文网首页
跨域总结

跨域总结

作者: 赵BW | 来源:发表于2017-04-08 18:09 被阅读0次

    昨天总结了一下ajax,今天顺便把跨域也说了吧。

    在正常的情况下。是不允许跨域的。因为保证安全。大家要准守同源策略
    同源策略
    • 浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。
    • 本域:相同的协议、 相同的域名、相同的端口

    例:http://zhaobw.com:8080/test.html
    http就是协议、zhaobw.com就是域名、8080就是端口。


    跨域:
    • 在浏览器下,向不同的协议、域名、端口,发送请求获取数据。突破同源策略。

    跨域的方法:
    • jsonp
    • 降域
    • cors
    • postMassage
    详细介绍跨域方法
    jsonp

    html中script标签可以引入其他域下的js,比如引入线上的jquery库。利用这个特性,可实现跨域访问接口。需要后端支持

    • 定义数据处理函数_fun

    • 创建script标签,src的地址执行后端接口,最后加个参数callback=_fun

    • 服务端在收到请求后,解析参数,计算返还数据,输出 fun(data) 字符串。

    • fun(data)会放到script标签做为js执行。此时会调用fun函数,将data做为参数。。

      <script type="text/javascript">
      var list = document.querySelector("#list");
      console.log(list);
      var script = document.createElement("script");
      console.log(script);
      script.src = "http://a.zhaobw.com:8080/getList?callback=add";
      document.head.appendChild(script);
      function add(data){
      list.innerHTML = data;
      }
      </script>


    CORS

    CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式,支持现代浏览器,IE支持10以上。 实现方式很简单,当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。所以 CORS 的表象是让你觉得它与同源的 ajax 请求没啥区别,代码完全一样。

       res.header("Access-Control-Allow-Origin", "http://a.jrg.com:8080"); 
    

    降域

    在主域名相同, 二级域名不同的情况下。可以通过domian来进行设定

       //qwe.a.html和asd.a.html
       document.domian = "a.html"
    

    #######postMessage
    允许跨窗口通信,不论这两个窗口是否同源。postMessage方法的第一个参数是具体的信息内容,第二个参数是接收消息的窗口的源(origin),即"协议+域名+端口"。也可以设为*,表示不限制域名,向所有窗口发送。

    相关文章

      网友评论

          本文标题:跨域总结

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