JSONP是JSON with padding(填充式JSON或参数式JSON)的简写,是应用JSON的一种新方法,在后来的Web服务中非常流行。JSONP看起来与JSON差不多,只不过是被包含在函数调用中的JSON,就像下面这样。

callback({ “name”: “Nicholas” });

JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数。回调函数的名字一般是在请求中指定的。而数据就是传入回调函数中的JSON数据。下面是一个典型的JSONP请求。

http://freegeoip.net/json/?callback=handleResponse

这个URL是在请求一个JSONP地理定位服务。通过查询字符串来指定JSONP服务的回调参数是很常见的,就像上面的URL所示,这里指定的回调函数的名字叫handleResponse() 。

JSONP是通过动态 <script> 元素来使用的,使用时可以为 src 属性指定一个跨域URL。这里的 <script> 元素与 <img> 元素类似,都有能力不受限制地从其他域加载资源。因为JSONP是有效的JavaScript代码,所以在请求完成后,即在JSONP响应加载到页面中以后,就会立即执行。来看一个例子。

function handleResponse(response){alert(“You’re at IP address ” + response.ip + ”, which is in ” + response.city + ”, ” + response.region_name);}var script = document.createElement(“script”);script.src = “http://freegeoip.net/json/?callback=handleResponse”;document.body.insertBefore(script, document.body.firstChild);

这个例子通过查询地理定位服务来显示你的IP地址和位置信息。

JSONP之所以在开发人员中极为流行,主要原因是它非常简单易用。与图像Ping相比,它的优点在于能够直接访问响应文本,支持在浏览器与服务器之间双向通信。不过,JSONP也有不足。

首先,JSONP是从其他域中加载代码执行。如果其他域不安全,很可能会在响应中夹带一些恶意代码,而此时除了完全放弃JSONP调用之外,没有办法追究。因此在使用不是你自己运维的Web服务时,一定得保证它安全可靠。

手写一个jsonp实现相关推荐

  1. 手写一个promise用法_手写一个 Promise

    1 js 的基本数据类型? 2 JavaScript 有几种类型的值? 3 什么是堆?什么是栈?它们之间有什么区别和联系? 4 内部属性 [Class] 是什么? 5 介绍 js 有哪些内置对象? 6 ...

  2. 【干货】JDK动态代理的实现原理以及如何手写一个JDK动态代理

    动态代理 代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位.代理模式从类型上来说,可以分为静态代理和动态代理两种类型. 在解 ...

  3. vue @click 赋值_vue 手写一个时间选择器

    vue 手写一个时间选择器 最近研究了 DatePicker 的实现原理后做了一个 vue 的 DatePicker 组件,今天带大家一步一步实现 DatePicker 的 vue 组件. 原理 Da ...

  4. 肝一波 ~ 手写一个简易版的Mybatis,带你深入领略它的魅力!

    零.准备工作 <dependencies><dependency><groupId>mysql</groupId><artifactId>m ...

  5. 硬核!手写一个优先队列

    文章收录在首发公众号:bigsai 期待你的到访! 前言 事情还要从一个故事讲起: 对于上面那只可爱的小狗狗不会,本篇即为该教程,首先,我要告诉这只可爱的小狗狗,这种问题你要使用的数据结构为优先队列, ...

  6. ds查找—二叉树平衡因子_面试官让我手写一个平衡二叉树,我当时就笑了

    平衡二叉树对于初学者一直是一个比较复杂的知识点,因为其里面涉及到了大量的旋转操作.把大量的同学都给转晕了.这篇文章最主要的特点就是通过动画的形式演示.确保大家都能看懂.最后是手写一个平衡二叉树. 一. ...

  7. 俄罗斯小方块游戏html,通过h5的canvas手写一个俄罗斯方块小游戏

    开始自己手写一个好玩的俄罗斯方块吧,上变形,左右移动,下加速,空格瞬移等功能,无聊的时候学习下canvas,f12 修改分数,体验金手指的快乐吧 1.定义界面,和按钮 上 下 左 右 2.js部分 1 ...

  8. vue 使用fs_模仿vue-cli,手写一个脚手架

    vue-cli 在vue的开发的过程中,经常会使用到vue-cli脚手架工具去生成一个项目.在终端运行命令vue create hello-world后,就会有许多自动的脚本运行. 为什么会这样运行呢 ...

  9. 未能加载文件或程序集或它的某一个依赖项_手写一个miniwebpack

    前言 之前好友希望能介绍一下 webapck 相关的内容,所以最近花费了两个多月的准备,终于完成了 webapck 系列,它包括一下几部分: webapck 系列一:手写一个 JavaScript 打 ...

最新文章

  1. 视觉系统的演化之旅——视觉器官、光感受器及视觉分子
  2. [转帖]Linux中的15个基本‘ls’命令示例
  3. JTStackController
  4. String 类型切割成数组-转int数组-升列排序-拼接字符串、需求 有如下一个字符串 91 27 46 38 50
  5. 三年级计算机课画曲线,三年级上册信息技术曲线工具教案
  6. Win11系统如何刷新按钮
  7. 中职计算机课例分析,中学信息技术课教学案例分析
  8. sougou ubuntu 优麒麟_Ubuntu20.04LTS安装搜狗输入法
  9. mysql java驱动 ibm_转!!各种数据库的jdbc驱动下载及连接方式
  10. .net C#实现图像对比
  11. 手机计算机怎样调音乐,手机音乐EQ均衡器调节音效简单小技巧-均衡器设置
  12. 网站被黑、被入侵该如何解决?
  13. BERTILO发“富”啦,来元代艺数get你的专属「招财兔」!
  14. R语言:批量获取指定股票代码的股票数据
  15. 安装多版本Chrome
  16. 荒岛求生游戏显示服务器不行,荒岛求生连接服务器失败怎么办
  17. APP自动化测试框架搭建(五)--Python+Appium+pytest-html
  18. 搜狗输入法 linux版本好用,【2345好压和搜狗输入法 For Linux哪个好用】2345好压和搜狗输入法 For Linux对比-ZOL下载...
  19. 自学java核心技术笔记(康师傅)
  20. 骨传导耳机对骨头有影响吗?骨传导耳机好不好

热门文章

  1. 了解c语言程序员(工程师)岗位需要掌握哪些能力?_码畜,码农,码皇,程序员有什么区别?...
  2. oracle监听 客户 实例,oracle 数据库实例 监听
  3. idc网站html源码,40个网页常用小代码
  4. python sanic加速_python微服务sanic 使用异步zipkin(2) - 一步步创建Sanic插件: sanic-zipin...
  5. sklearn one_hot向量输出维度第2维大小的本质
  6. 总算明白了Q-Q plot
  7. docker开启远程访问_Ubuntu安装Jupyter notebook——开启远程访问
  8. randn函数加噪声_损失函数 (Loss Function)
  9. brew更新的时候不更新某个应用_这样用 Git 想不升职加薪都难!
  10. Leetcode-136. 只出现一次的数字(python3)