• JSONP跨域


    javascript跨域资源请求是一个老生长谈的问题了。但是莫笑,我至今没有接触过....最近弄了弄后端,理顺了一下,写在这里。
    所谓JSONP就是JSON with Padding。是一个非官方的协议。据说各种浏览器兼容都很好,看下后面的代码应该就明白了。

    • 先说客户端

    JSONP的协议大约是这样的。客户端请求一个地址的时候,将回调函数通过url传给服务器。服务器在接到请求之后,会返回一个执行这个回调的javascript代码片断。所以,客户端的请求大约就是这个样子的。

      <script type="text/javascript">
       function _callback(data){
           // todo
      }
    </script>
    

    假设_callback就是请求成功之后的回调。data就是需要跨域获得的数据。那么,前端可以这样做。http://cross-domain/a.jsp?jsoncallback=_callback

    • 再说服务器

    接收该url之后,可以通过后端的方法获取到这个jsoncallback的函数名。后端的大致代码如下。

    doGet(request, response){
         String data = ""; // 后端通过查数据库或其他方式取得该请求需要的数据,将其拼成一个json格式的字符串。
         String callbackName = request.getParameter("jsoncallback"); // 取得callback的名字。
         response.write("<script type="text/javasctipt"");
         response.write(callbackName+"(" + data + ")");
         response.write("</script>");
    }
    

    浏览器接收到该字符串之后,会将其解析为javascript代码,然后执行,就可以达到在当前页面取得其他域的数据的目的了。

  • 相关阅读:
    P2617 Dynamic Rankings[带修主席树(模板)]
    P2617 Dynamic Rankings[带修主席树(模板)]
    P4127 [AHOI2009]同类分布
    P4127 [AHOI2009]同类分布
    P4550 收集邮票 [期望dp]
    P4550 收集邮票 [期望dp]
    P3168 [CQOI2015]任务查询系统
    蓝桥杯 2的次幂表示 递归
    蓝桥杯 最大的算式 dp
    蓝桥杯 未名湖边的烦恼 递推 dp
  • 原文地址:https://www.cnblogs.com/CoinXu/p/4561965.html
Copyright © 2020-2023  润新知