三、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. jQuery旋转插件—rotate

    jQuery旋转插件,支持Internet Explorer 6.0+ .Firefox 2.0 .Safari 3 .Opera 9 .Google Chrome rotate(angle) 正值表 ...

  2. Linux用来抗衡Win的那些桌面环境

    作为一个 Linux 的爱好者,参加了 9 月 22 日 Linux Deepin 在北京举行的用户与开发者大会(给大家一个链接).名为参加会议,实为打酱油.但 Linux Deepin 团队的一些理 ...

  3. [Android Pro] ListView,GridView之LayoutAnimation特殊动画的实现

    转载自:http://gundumw100.iteye.com/blog/1874545 LayoutAnimation干嘛用的?不知道的话网上搜一下. Android的Animation之Layou ...

  4. python的lxml解析器

    from lxml import etree import codecs import sys from lxml import etree def parser(p): tree = etree.H ...

  5. #!/usr/bin/env在脚本中的作用

    在linux的一些脚本,需在开头一行指定脚本的解释程序,如: #!/usr/bin/env bash #!/usr/bin/bash #!/usr/bin/env python  告诉操作系统执行这个 ...

  6. python编码规范、js编码规范及IDE的检查插件pylint/eslint等

    一.python规范 参考:https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/的风格规范和语 ...

  7. war后缀的文件

    其实war文件就是Java中web应用程序的打包.借用一个老兄的话,"当你一个web应用程序很多的时候,如果你想把它部署到别的机器上,来回拷这些文件是件挺郁闷的事情,如果要是一个文件就好了. ...

  8. 实现同时提交多个form(基础方法) 收集

    实现同时提交多个form(基础方法) 收集 分类: 1.2-JSP 1.3-J2EE 1.1J2se 1.0-Java相关2011-12-01 20:59 1644人阅读 评论(0) 收藏 举报 bu ...

  9. iOS: 设置App的国际化和本地化

    原文链接:http://www.cocoachina.com/appstore/20160310/15632.html 前言 App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的 ...

  10. 一些数据 bandwidth之类

    33ms  2436x1125 full resolution write bandwidth  300MB/s memory bandwidth snapdragon 630 10GB/3   // ...