zoukankan      html  css  js  c++  java
  • JSONP(跨域请求) —— 一种非官方跨域数据交互协议

    1、JSONP的作用

         由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为

    了实现跨域请求,可以通过script标签实现跨域请求,然后再服务器端输出JSON数据并执行回调函

    数,从而解决了跨域的数据请求。

         JSONP协议的一个要点:允许用户传递一个callback参数给服务器端,然后服务器端返回数据时

    会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自

    动处理返回函数了。

    2、如何使用JSONP?

         在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务器返回的相

    应数据并动态执行回调函数

         JSONP原理:

         (1)首先在客户端注册一个callback,然后把callback的名字传给服务器、此时,服务器先生成

    json数据

         (2)然后以javascript语法的方式,放置到function中,function名字就是传递上来的参数jsonp

         (3)最后将json数据直接以入参的方式,放置到function中中,这样就生成了一段js语法的文档,

    返回给客户端。

    eg.

    <script type="text/javascript">
         function jsonCallback(result){
              for(var i in result){
                  alert(i+":"+result[i]);
              }
         }
         var JSONP = document.createElement("script");
         JSONP.type = "text/javascript";
         JSONP.src = "http://crossdomain/services.php?callback=jsnopCallback";
         document.getElementByTagName("head")[0].appendChild(JSONP);
    </script>
    
    //或者
    <script type="text/javascript" src="http://crossdomain/services.php?callback=jsnopCallback"></script>
    个人能力有限(* *),欢迎指正、交流。
  • 相关阅读:
    数独小算法,测试通过(Java)
    OC运行时和方法机制笔记
    AlertView点击确定后再执行后面的代码
    对第三方库集成方式的分析
    当程序进入后台时执行长时间代码
    iOS开发之GCD使用总结
    缓存网络请求的结果
    防止 NSTimer retain 作为 target 的 self
    获取设备唯一码
    原生网络请求以及AFN网络请求/异步下载
  • 原文地址:https://www.cnblogs.com/vanstrict/p/5654641.html
Copyright © 2011-2022 走看看