跨域,json与jsonp格式
好久都没有写随笔了,最近大家都忙着考试要放假了,我也要忙一忙喽.....不过再忙我还是来啦
简单的说,json是一种轻量级的数据交换格式。平时我们使用ajax等使用的一种数据形式,那么今天就说说jsonp是个什么鬼。首先接触的时候也是一脸懵逼,都不清楚这是什么东西,上网搜啊查啊,最后才弄明白了。
我们平时在写项目的时候前端后端交互数据用的是json,但是如果你想跨域进行数据访问,比如别的网站想看到你的数据或者你想看到别人的数据,不能用json格式进行传送数据,有才的人啊就发现还有jsonp。老实说,jsonp就是满足你跨域读取数据的一种方法,下面就直接看代码吧。
public function actionIndex(){
header('Content-type: application/json');
//获取回调函数名
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//把预定义的字符转换为 HTML 实体。
$resourceid = $_GET["resource_id"];
$resourceid = base64_decode($resourceid);
$resourceid = SafetyHelper::KillDangerCode($resourceid);
if(empty($resourceid) || is_numeric($resourceid)==false){
$json_data= json_encode(array("code"=>300,"msg"=>"素材ID错误","data"=>array()));
echo $jsoncallback . "(" . $json_data . ")";
die();
}
$resource = Resource::model()->find("id=".$resourceid);
if(!empty($resource)){
$arr["code"]=200;
$arr["msg"]="获取成功";
$arr["data"]=array("title"=>$resource->title,"url"=>$resource->filepath,"hits"=>$resource->hits);
}else{
$arr["code"]=404;
$arr["msg"]="资源不存在";
$arr["data"]="";
}
$json_data=json_encode($arr);
//输出jsonp格式的数据
echo $jsoncallback . "(" . $json_data . ")";
}
可以看的出来,比平时我们用json的时候多了两行代码,就是要用这个回调函数来实现输出的格式变为jsonp。这是在PHP页面的代码,另外需要在HTML页面写一个js来调用得到jsonp。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取jsonp对象</title>
<script src="jquery.js"></script>
</head>
<body>
<input type="text" id="val" ><input type="button" id="dian" value="点击">
<script>
var url='jsonp.php';
$("#dian").click(function(){
var aa=$("#val").val();
var data={jsoncallback:aa}; $.getJSON(url,data,function(msg){
alert(msg);
})
}) </script>
</body>
</html>
跨域,json与jsonp格式的更多相关文章
- 跨域请求之JSONP 一
跨域请求之JSONP 一 跨域请求的方式有很多种, iframe document.domain window.name script XDomainRequest (IE8+) XMLHTTPReq ...
- js跨域交互之jsonp - 看完就能让你了解jsonp原理 (原)
跨域? 跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 同源策略? 一般来说 a.com 的网页无法直接与 b.com的服务器沟通, 浏览器的同源策略限制从一个源加载的文档或脚本 ...
- 跨域请求之jsonp的实现方式
ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在sr ...
- 与跨域相关的 jsonp 劫持与 CORS 配置错误
参考文章: CORS(跨域资源共享)错误配置漏洞的高级利用 JSONP劫持CORS跨源资源共享漏洞 JSONP绕过CSRF防护token 读取型CSRF-需要交互的内容劫持 跨域资源共享 CORS 详 ...
- JAVAEE——宜立方商城11:sso登录注册功能实现、通过token获得用户信息、Ajax跨域请求(jsonp)
1. 学习计划 第十一天: 1.sso注册功能实现 2.sso登录功能实现 3.通过token获得用户信息 4.Ajax跨域请求(jsonp) 2. Sso系统工程搭建 需要创建一个sso服务工程,可 ...
- 跨域解决方案之JSONP,通过借助调用百度搜索的API了解跨域案例
跨域解决方案之JSONP 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web ...
- 跨域解决之JSONP和CORS的详细介绍
JSONP跨域和CORS跨域 什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同源策略 同源策略:域名.协议.端口均相同. 浏览器执行Jav ...
- springmvc 自定义view支持json和jsonp格式数据返回
1.如果controlloer上用@ResponseBody注解,则用<mvc:message-converter>里面配置的json解析器进行解析 <mvc:annotation- ...
- js跨域请求(jsonp)
jsonp是跨域请求的手段之一. jsonp的原理: 先来看看下面这段代码 <!DOCTYPE html> <html lang="en"> <hea ...
随机推荐
- Kafka学习-简介
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.S ...
- jquery之效果操作
jQuery操作之效果 效果一共分五大类 一.基本 二.滑动 三.淡入淡出 四.自定义 五.设置 咱们先来看一下基本类 一.基本又分为 show() hide() toggle() html代码 &l ...
- Unable open dabase as spfile parameter incorrect
Error desc: ORA-00821: Specified value of sga_target 16M is too small, needs to be at least 4832M ...
- 用CSS3实现饼状loading效果
原文地址:http://visugar.com/2017/05/17/CSS3%E9%A5%BC%E7%8A%B6loading%E6%95%88%E6%9E%9C/ 写在前面 (附录有源码及效果) ...
- Spring-AOP用法总结
前言 Spring AOP的实现方法很多,在项目开发中具体采用什么方式,需要按实际情况来选择,每一种的用法,有其一定的实用价值,所以本文将各种使用方法进行了具体实现.主要包括Advice的be ...
- 对JVM运行时常量池的一些理解
1.JVM运行时常量池在内存的方法区中(在jdk8中,移除了方法区) 2.JVM运行时常量池中的内容主要是从各个类型的class文件的常量池中获取,对于字符串常量,可以调用intern方法人为添加,而 ...
- 比较容易理解的---原生js瀑布流
最近一直在恶补基础JS H5 CSS3的基础知识 关于这个瀑布流: 本来打算看着教程来做的. 不过 感觉理解起来有点复杂. SO, 自己参考教程默写了一个.. 目前我所接触过的瀑布流布局分为2大类 主 ...
- linux通配符与正则表达式
通配符 * 任意字符,可重复多次 ? 任意字符,重复一次 [] 代表一个字符 举例: [a,b,c] 表示abc中任意一个 通配符的作用是用来匹配文件名的 正则表达式 正则表达式 ...
- 使用FileUtils简化你的文件操作
前言: 在工作当中我们往往遇到很多文件的操作,我们也习惯写一些自己定义的工具类来简化文件操作,其实apache的commons的FileUtils类就是这样一个工具类,使用它能大大的简化我们对文件的操 ...
- 开涛spring3(7.3) - 对JDBC的支持 之 7.3 关系数据库操作对象化
7.3.1 概述 所谓关系数据库对象化其实就是用面向对象方式表示关系数据库操作,从而可以复用. Spring JDBC框架将数据库操作封装为一个RdbmsOperation,该对象是线程安全的.可复 ...