三、jsonp的原理:带有src属性标签的跨域资源获取能力,在jsonp中通常使用<script>标签,因为<script>标签获取的跨域资源可以使用回调函数直接处理

jsonp的实现:

前端代码:

<script>
function callback(data){
console.log(data);
}
</script>
<script type="text/javascript" src="//www.remote.com/remote.php?callback=callback"></script>

后台代码 <www.remote.com/remote.php>

if(isset($_GET["callback"])){
$server_name = $_SERVER["SERVER_NAME"];
$path = $_SERVER["PHP_SELF"];
$query_string = $_SERVER["QUERY_STRING"];
if($query_string!=""&&$query_string!=null){
$query_paras = explode("&", $query_string);
$query_array = array();
$query_length = count($query_paras);
for($i=0;$i<$query_length;$i++){
$paras = explode("=", $query_paras[$i]);
$query_array[$paras[0]]=$paras[1];
}
$data = array("server_name"=>$server_name,"path"=>$path,"query_paras"=>$query_array);
}else{
$data = array("server_name"=>$server_name,"path"=>$path);
}
$callback = $_GET["callback"];
echo $callback . "(" . json_encode($data) . ")";

后台服务器将需要返回的json数据进行封装,然后并不直接返回json,而是返回一句js代码,

 echo $callback . "(" . json_encode($data) . ")";

这句代码将返回的json数据调用回调函数直接进行处理

四、zepto实现jsonp

function getData(){
$.ajax({
type: 'GET',
url: '//www.homeworksong.sinaapp.com/getUrlInfo.php?callback=?',
timeout: 300,
context: $('tbody'),
data: { name: 'Zepto',type:"JSONP" },
success: function(data){
console.log(data);
},
error: function(xhr, type){
alert('Ajax error!')
}
});
}

五、kissy实现jsonp

            require(["io","node","util"],function(IO,$,Util){
IO.jsonp("http://www.homeworksong.sinaapp.com/getUrlInfo.php",{type:"JSONP",name:"Kissy" },function(data){
console.log(data);
});
});
});

zepto,kissy前端框架实现跨域的更多相关文章

  1. Django框架 之 跨域请求伪造

    Django框架 之 跨域请求伪造 浏览目录 同源策略与Jsonp 同源策略 Jsonp jQuery对JSONP的实现 CORS 简介 两种请求 同源策略与Jsonp 同源策略 同源策略(Same ...

  2. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决方法一: 1.使用elementUI框架el-upload跨域上传时,后端获取不到cookie,后端接口显示未登录,在添加了 with-credentials="true"后依 ...

  3. SSM框架处理跨域问题

    什么是跨域 跨域是指从一个域名的网页去请求另一个域名的资源.比如从www.baidu.com 页面去请求 www.google.com 的资源.跨域的严格一点的定义是:只要 协议,域名,端口有任何一个 ...

  4. 前端JavaScript实现跨域的方式(转)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  5. Vue 本地代理 纯前端技术解决跨域

    vue-axios获取数据很多小伙伴都会使用,但如果前后端分离且后台没设置跨域许可,那要怎样才能解决跨域问题? 常用方法有几种: 通过jsonp跨域 通过修改document.domain来跨子域 使 ...

  6. 前端JSONPJIE解决跨域问题

    解决同源策略的两个方法 1 . JSONP jsonp (将 JSON 数据填充进回调函数,这就是JSONP的JSON+Padding 的含义) jsonp是json用来跨域的一个东西,原理是通过sc ...

  7. 前端-关于CORS跨域的解决方案,面向服务端

    最近自己在写后台管理系统的时候,并没有采用jsp.freemaker.叶子等模板技术,而是由后端提供数据api,前端通过AJAX和JQuery来动态操作页面上的一些div.table元素,从而实现报表 ...

  8. 关于laravel框架的跨域请求/jsonp请求的理解

    最近刚接触laravel框架,首先要写一个跨域的单点登录.被跨域的问题卡了两三天,主要是因为对跨域这快不了解,就在刚才有点茅塞顿开的感觉,我做一下大概整理,主要给一些刚接触摸不着头脑的看,哪里写得不对 ...

  9. 微信授权、获取用户openid-纯前端实现——jsonp跨域访问返回json数据会报错的纯前端解决办法

    近来,倒霉的后台跟我说让我拿个openid做微信支付使用,寻思很简单,开始干活. 首先引导用户打开如下链接,只需要将appid修改为自己的就可以,redirect_url写你的重定向url https ...

随机推荐

  1. Oracle SQL执行缓慢的原因以及解决方案

     以下的文章抓哟是对Oracle SQL执行缓慢的原因的分析,如果Oracle数据库中的某张表的相关数据已是2亿多时,同时此表也创建了相关的4个独立的相关索引.由于业务方面的需要,每天需分两次向此表中 ...

  2. 转-"进程android.process.acore已意外停止" 解决办法

    运行手机虚拟机时,老是弹出这样的“android.process.acore“服务已意外停止,虽不影响正常使用,但终究影响心情.网上找的方案,按如下步骤操作,可以解决问题: 出现这个提示不用担心,并不 ...

  3. jquery的一次点击实现

    1.项目中需要实现一个需求,第一个点击的时候允许弹出dialog对象框,第二次不允许,除非重新刷新页面 2.在js的click事件中定义一个标签属性:相当于设置一个全局变量 var auclot= ' ...

  4. Javascript中的对象(二)

    Javascript是一种基于原型的对象语言,而不是我们比较熟悉的,像C#语言基于类的面向对象的语言.在前一篇文章中,我们已经介绍了Javascript中对象定义的创建.接下来我们来介绍一下Javas ...

  5. LESS,强大的CSS预处理语言

    虽然写的css不多,但是我已经切身感觉到了书写css的恶心...抛开最令人烦的浏览器兼容问题不说,这个语言本身就有不少问题. 最简单的,比如多个地方是同一个颜色的,如果可以写在一个样式里还没什么,但是 ...

  6. django queryset合并问题

    今天在实现搜索时遇到一个问题,如何同时搜索model里面的title以及content和category字典 contents = Blog.objects.filter(content__conta ...

  7. ubuntu中文设置方法

    1.首先打开ubuntu设置(右上角的齿轮),或者直接在左面找到设置,如下图所示. 2.然后点[language support]设置,如下图所示. 3.在弹出的窗口再点击[install]设置操作, ...

  8. 使用rsync进行多服务器同步

    使用rsync进行多服务器同步 @(Others) 当集群数量很大时,修改配置文件和节点之间的文件同步是一件很麻烦且浪费时间的事情. rsync是linux上实现不同机器之间文件同步.备份的工具,ce ...

  9. About stats collected

    pg_class.relpages pg_class.reltuples仅仅是近似值,和实际数据会有点误差: 新建空表.首次insert对自己主动收集和更新统计信息,影响的表pg_class\pg_s ...

  10. ckeditor body与P标签去除

    项目中使用到了ckeditor ,但在比编辑框的下方多出两个标签,分别是一个 body与P标签,查询代码后发现不是我们自己增加,而是组件自己就有的问题 经过查询在使用的js申请处 新增 CKEDITO ...