JSONP && CORS

作者: YangJeremy | 来源:发表于2018-03-27 22:42 被阅读0次

    跨域必须先知道同源策略。

    JSONP

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

    echo $cb . '&&' . $cb . '(' . json_encode($ret) . ')';
    定义数据处理函数_fun
    创建script标签,src的地址执行后端接口,最后加个参数callback=_fun
    服务端在收到请求后,解析参数,计算返还数据,输出 fun(data) 字符串。
    fun(data)会放到script标签做为js执行。此时会调用fun函数,将data做为参数。
    举个例子:
    1.script标签会把资源下载下来作为资源取运行


    1

    2.routerjs这是后端接口


    后端接口

    3.在页头创建script标签然后去加载


    3

    4.这就是里面的数据


    这就是里面的数据.jpg

    5.这是后端的处理,去解析callback这个参数


    5

    6.当然我们可以进行一下扩展


    6

    7.让他加载之后又立刻删掉


    7

    这就是JSONP的过程。

    CORS

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

    相关文章

      网友评论

        本文标题:JSONP && CORS

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