JSONP是如何工作的?
来源:互联网 发布:如何清除软件注册表 编辑:程序博客网 时间:2024/05/18 14:28
这个问题的探究来源于一个需求:
当访问某个页面的时候,需要向另外一个网站报告一下这次访问的信息。
其实发一个跨域的请求就能大致实现这个需求。我们发跨域的例子其实很常见,例如请求一个第三方的图片、引入一个第三方的样式文件、引入一个cdn上的js文件。然后,说到发送请求,在这个web2.0的时代,我们自然而然会想到Ajax请求。但是遗憾的是,考虑到安全问题,即所谓的同源安全策略,用ajax请求一个第三方的地址是被浏览器所禁止的。然而天无绝人之路,有个叫JSONP的技术就是来解决这种问题的。
说道JSONP,可能多数人对它的知晓程度仅限于jQuery,jQuery提供了发送jsonp请求的方法。比如在使用$.ajax()方法的时候:
123456789101112131415161718192021
// Using YQL and JSONP$.ajax({ url: "http://query.yahooapis.com/v1/public/yql", // the name of the callback parameter, as specified by the YQL service jsonp: "callback", // tell jQuery we're expecting JSONP dataType: "jsonp", // tell YQL what we want and that we want JSON data: { q: "select title,abstract,url from search.news where query=\"cat\"", format: "json" }, // work with the response success: function( response ) { console.log( response ); // server response }});
jQuery将jsonp请求封装成类似ajax请求的样子,这样能让开发者在使用的时候更加方便,但是实际上,jsonp压根不是通过XMLHttpRequest来实现的。
一个简单的JSONP请求可以通过一下代码实现:
123456789
var callbackName = 'iAmTheCallback';window[callbackName] = function (uuu, vvv, www) { // 对返回的数据做后续处理}var script = document.createElement('script');script.src = 'http://melon.github.io/xxx/yyy?callback='+callbackName;document.body.appendChild(script);
这是前端部分的代码,要想真正实现JSONP的功能,还需要后端的配合。针对上面这个例子,当前端请求这个script地址的时候,后端只要按以下内容响应就会有神奇的效果:
1
iAmTheCallback('abc', 'def', 'ghi');
说道这儿,很多人也许就恍然大悟了。JSONP名字听着高端,其实也不过如此嘛。
1 0
- JSONP是如何工作的?
- JSONP是如何工作的
- JSONP 的工作原理
- JSONP 的工作原理
- JSONP 的工作原理,JSONP Demo讲解
- oracle是如何工作的
- Oracle是如何工作的
- Oracle是如何工作的
- Oracle是如何工作的
- Oracle是如何工作的
- SSL是如何工作的?
- 杀毒软件是如何工作的
- SSL是如何工作的?
- Flex是如何工作的
- Oracle是如何工作的
- HttpModule是如何工作的
- SSL是如何工作的
- HttpModule是如何工作的
- DA14580开发血迹12--完整Profile解析(以心率服务为例)
- 对于line-height的一些理解
- September 3rd 模拟赛C T3 数字 Solution
- 【华为OJ】简单密码破解
- Java规范
- JSONP是如何工作的?
- echarts自定义showlading()样式和文本
- Angular2 gotchas: Double binding within Form
- Tensorflow - Tutorial (1) : 线性回归
- ubuntu、centos、debian镜像的下载地址
- Windows Mysql乱码
- java 相关环境变量的配置(jdk、tomcat、maven)
- nodeJS+express+CKeditor 上传图
- 【mybatis】mybatis的逆向工程使用步骤