美文网首页
JSONP_跨域

JSONP_跨域

作者: _李祺 | 来源:发表于2017-04-26 21:19 被阅读0次

    1. 什么是同源策略

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

    不同源的例子:
    http://jirengu.com/main.jshttps://jirengu.com/a.php (协议不同)
    http://jirengu.com/main.jshttp://bbs.jirengu.com/a.php (域名不同,域名必须完全相同才可以)
    http://jiengu.com/main.jshttp://jirengu.com:8080/a.php (端口不同,第一个是80)
    需要注意的是: 对于当前页面来说页面存放的 JS 文件的域不重要,重要的是加载该 JS 页面所在什么域

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

    跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
    实现方式:
    1.JSONP
    html中script标签可以引入其他域下的js,比如引入线上的jquery库。利用这个特性,可实现跨域访问接口。需要后端支持
    2.CORS
    CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式。
    3.降域
    通过修改document.domain来跨域,但条件是域名要相似,例如:http://a.jrg.com/a.htmlhttp://b.jrg.com/a.html可以令document.domain = "jrg.com"进行降域达到跨域的目的。
    4.postMessage
    postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。

    3. JSONP 的原理是什么

    JSONP是通过动态<script>元素来使用的,使用时可以理解为src属性制定一个跨域URL。这里的<script>元素有能力不受限制的从其他域加载资源。因为JSONP是有效的JavaScript代码,所以在请求完成后,即在JSONP响应加载到页面中以后,就会立即执行。
    JSONP由两部分组成:回调函数和数据。回调函数是响应到来时应该在页面中调用的函数。回调函数的名字一般在请求中指定的。而数据就是传入回调函数中的JSON数据。

    4. CORS是什么

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

    5. 根据视频里的讲解演示三种以上跨域的解决方式

    配置host:
    # localhost name resolution is handled within DNS itself.
    # 127.0.0.1 localhost
    # ::1 localhost
    127.0.0.1 a.lee.com
    127.0.0.1 b.lee.com
    127.0.0.1 lee.com

    1.JSONP
    代码地址


    2.CORS
    代码地址

    3.降域
    代码地址

    4.postMessage
    代码地址

    相关文章

      网友评论

          本文标题:JSONP_跨域

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