jsonp解析php,jsonp实现原理解析

一. jsonp实现原理是利用script标签可以获取不同源资源的特点,来达到跨域访问某个资源的目的。具体行为如下:创建一个script标签,将请求地址写入它的src属性,将这个script外链插入head标签中;

声明一个回调函数callback,函数名和请求地址中的一致;

请求地址的内容是一个以json对象为参数的执行函数callback;

当script资源载入时,callback开始执行,将json数据输出。

jsonp其实就是json padding,而在json数据外包裹它的那个函数,就是padding。

// 简单的mock jsonpvar mockJsonp = function(url) {var ele = document.createElement('script');var head = document.getElementsByTagName('head')[0];

ele.src = url;

head.appendChild(ele);

}

mockJsonp('./index.js');function callback(data){

console.log(data);

}// index.jscallback("name": "xxx", "age": "20");

二. jq中的ajax请求数据格式为jsonp时,会发生以下操作:先构造一个script标签,然后注册一个onload的回调,最后将构造好的script标签insert进去;insert完成之后,会触发onload回调,其中又将前面插入的script标签去掉了。其中的 代码 callback( 200, "success" ) 其实就是触发 ajax 的jsonp成功时的success回调函数,callback函数其实是一个 done 函数。

三. jsonp跨域只能是get请求,jq在封装jsonp跨域时,不论我们指定的是get还是post,他统一换成了get请求。

四. 其他跨域方式cors(Cross-Origin Resource Sharing)跨域资源共享,服务器端设置Access-Control-Allow-Origin,如果浏览器检测到相应的设置,就会允许访问;

修改document.domain,将子域和主域的document.domain设为同一个主域;

window.name,每个页面都对window.name有读写的权限,window.name持久存在在一个窗口载入过的所有页面中;

window.postMessage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值