跨域

作者: zh_yang | 来源:发表于2017-09-15 14:00 被阅读0次

    1、 什么是同源策略

    浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

    本域指的是?

    2、什么是跨域?跨域有几种实现形式

    跨域就是突破同源策略的限制,使一个域名的网页可以请求另一个域名的资源。实现方式:

    • 降域document.domain
      前提条件:操作iframe,这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域同时为两个域设置document.domain= xxx.com

    • jsonp :
      利用script的src标签的跨域属性,传递一个callback参数给服务端来获取其他源的数据

    • cors 跨域资源共享:
      在HTTP请求里添加特殊的头,允许服务器指定特定的域名可以跨域访问。

    • HTML5 postMssage:
      html5引入的API,可以实现跨文档、多窗口、跨域消息的传递。

    3、 JSONP 的原理是什么

    • 利用<script>标签没有跨域限制来达到与第三方通讯的目的。
    • 当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如: <script src="http://www.example.net/api?param1=1&param2=2"></script> 并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。
    • 第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如: callback({"name":"hax","gender":"Male"}) 这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。

    4、CORS是什么

    • CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),避开了浏览器的同源策略,通过在http请求里添加特殊的头,允许服务器指定哪些跨域请求是允许的。
    • 与jsonp使用目的相同,但是要比jsonp更强大,缺点是不兼容老的IE浏览器。如:
    header("Access-Control-Allow-Origin:http://jiuyi.com")
    //指定[http://jiuyi.com](http://jiuyi.com) 这个域可以请求它;
    header("Access-Control-Allow-Origin:*")
    //指定所有域都可以请求它;
    

    5、演示三种以上跨域的解决方式 ,写成博客

    几种跨域的演示

    相关文章

      网友评论

          本文标题:跨域

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