`
zhangyaochun
  • 浏览: 2574403 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jsonp

阅读更多

个人简单记录积累学习

 

同源策略

 

 

  •     由Netscape提出的一个安全策略
  •     现在所有支持javascript的浏览器多会使用这个策略
  •     同源指域名协议端口相同
 
但是随着web应用的扩张,以及各大网站直接的内嵌合作,需要我们有的时候去跨域进行数据的抓取和页面资源的操作(图片的访问等等)
 
 
JSONP--JSON with Padding
 
  1. 什么是jsonp
   jsonp是一个非官方的协议,它允许在服务器端集成script tags返回至客户端,通过javascript callback的形式去实现跨域。
 
     2.  简单说明
 
  域A的页面pageA1加载域B的数据,在域B的页面pageB1以javascript的形式声明需要的数据
  然后在域pageA1用script标签把pageB1加载进来,那么pageB的脚本就会得以执行。
  JSONP在此基础上加入回调函数,pageB1加载完之后会执行pageA1中定义的函数,所需要的数据会以参数的形式传递给改函数。
 
    3.  JSONP服务 ----Remote JSON Service
  
  一种带有附加功能的web服务,该功能支持在特定于用户的函数调用中打包返回JSON数据
  这种方法依赖于接受回调函数名作为请求参数的远程服务。然后该服务生成对该函数的调用,将JSON数据作为参数传递,在到达客户端时将其插入Web页面并开始执行。
 
    4.  缺点
 
  安全隐患比较多,第三方的脚本随意执行,可能对敏感数据上会有影响。
 
  
   5.  jQuery的JSONP支持
 
/*1.4.2版本代码
*/
getJSON:function(url,data,callback){
     return jQuery.get(url,data,callback,"json");
}

get:function(url,data.callback,type){
     if(jQuery.isFunction(data)){
            type =type || callback;
            callback = data;
            data = null;
    }
     return jQuery.ajax({
            type:"GET",
            url:url,
            data:data,
            success:callback,
            dataType:type
     });
}

ajax:function(origSelectings){
      var s = jQuery.extend(true,{},jQuery.ajaxSettings,origSelectings);
      var jsonp,status,data,callbackContext = origSettings &&origSettings.context || s,
      type = s.type.toUpperCase();
      // Handle JSONP Parameter Callbacks
		if ( s.dataType === "jsonp" ) {
			if ( type === "GET" ) {
				if ( !jsre.test( s.url ) ) {
					s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
				}
			} else if ( !s.data || !jsre.test(s.data) ) {
				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
			}
			s.dataType = "json";
		} 
}

 

 

 //使用?作为回调函数名,而非真实的函数名,jQuery会自动生成的函数名。

jQuery.getJSON("*****?id=1&callback=?",function(data){
    console.log("Data is"+data.id)
});
1
0
分享到:
评论

相关推荐

    详解如何在Vue项目中发送jsonp请求

    在页面a中由前端发送一个jsonp请求到客户方,得到一个token值 前端得到token值后向自己后端发送一个请求,后端根据token去redis(token的值就是redis里的key)里取值(key=token的值,value=用户信息等)判断用户是否已...

    JSONP简单调用实例

    JSONP简单调用实例。ASP.NET和纯HTML。jQuery的$.ajax的调用!jsonP说白了,就是在json字符串外面包上一个:参数名称+左右括弧!只是包了个:jsonpCallback() 而已! 相关文章:...

    解决跨域封装的jsonp.js文件

    解决跨域封装的jsonp

    JSONP解决跨域问题

    前端使用jquery,datatype采用jsonp,服务端采用C#编写的webService

    使用JSONP完成HTTP和HTTPS之间的跨域访问

    知识点一: 什么是 JSONP JSONP(JSON with Padding)是一种跨域访问技术,允许网页从不同域名下的服务器获取数据。它通过动态添加标签来实现跨域访问,绕过同源策略的限制。 知识点二: JSONP 的工作原理 JSONP 的...

    ajax跨域请求jsonp前后台代码

    基于ajax方式的跨域请求jsonp的前后台代码

    js跨域jsonp的使用

    jsonp的原理 jsonp的使用,使用jsonp解决js跨域问题!

    神奇的理解jsonp

    总算理解jsonp的应用了,以前只知道jsonp但是还是不会再代码中应用,看了这个以后突然恍然大悟,妈妈再也不用担心我学不会jsonp了(/坏笑,以上纯属虚构)

    Ajax跨域请求解决方案-JSONP

    该资源为ASP.NET网站开发技术中使用Ajax进行跨域请求时利用JSONP方案解决浏览器同源策略限制的源码,比较简单,仅供参考

    后台php设置jsonp

    后台php设置jsonp

    jquery-jsonp.js

     7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON...

    JSONP实现原理

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的...

    纯servlet实现JSONP

    纯servlet实现JSONP 非常简单易懂的一个例子。

    ajax jsonp跨域传参

    ajax jsonp跨域传参,里面有源码,不过写在txt中了,很适合调用别人的接口

    json和jsonp数据格式返回

    对应我的文章json和jsonp格式数据返回

    Jsonp+asp.net

    Jquery easyui+Jsonp+asp.net+翻页 事件版

    跨域访问解决方法-jsonp

    使用jsonp跨域获取json数据。Ajax获取JAVA服务器json数据。

    html通过 ajax jsonp跨域请求接收和传送数据

    html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台

    Jsonp和java操作

    Jsonp和java操作

Global site tag (gtag.js) - Google Analytics