前几天参加面试,好几个面试者简历都写着jsonp,解决跨域之类的调用。于是问一下知不知道jsonp的实现原理,结果没一个答得上来,有点小失望。

这里简单描述一下关键点,权当一个记录。

假设a网页调用b网站的服务

  • a网站会准备一个方法,例如callme(args)
  • a网站在页面插入一个script标签,src指向b网站的地址,并带上callme作为参数
  • b网站处理后,把结果和回调方法的名字组成一个字符串返回,例如callme(‘ok’)
  • 由于是script标签,所以字符串会被当成js解析执行,相当于调用到了callme方法
  • 主要利用了script可以跨站点访问的特性,且只能用GET请求,需要服务端做点配合,并且需要信任服务器(安全考虑)。jquery的jsonp ajax只是封装了这个过程,让你看上去和普通ajax没什么区别,其实却一点关系都没有。

jsonp这种小魔法的原理,网上一搜就可以找到,还是要有点好奇心的。

简单说说jsonp原理相关推荐

  1. Ajax跨域:Jsonp原理解析

    推荐先看下这篇文章:JS跨域(ajax跨域.iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重 ...

  2. JQuery实现Ajax跨域访问--Jsonp原理

    JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源策略). ...

  3. “约见”面试官系列之常见面试题之第六十七篇之jsonp原理和实现(建议收藏)

    一. 同源策略 所有支持Javascript的浏览器都会使用同源策略这个安全策略.看看百度的解释: 同源策略,它是由Netscape提出的一个著名的安全策略. 现在所有支持JavaScript 的浏览 ...

  4. 彻底弄懂jsonp原理及实现方法

    一. 同源策略 所有支持Javascript的浏览器都会使用同源策略这个安全策略.看看百度的解释: 同源策略,它是由Netscape提出的一个著名的安全策略. 现在所有支持JavaScript 的浏览 ...

  5. 跨域解决方法——jsonp原理

    跨域解决方法--jsonp原理 一个域名地址的组成: 当协议.子域名.主域名.端口号任意一个不相同时,都算作不同域,不同域之间相互请求资源,就算做"跨域".由于浏览器同源策略的限制 ...

  6. jsonp原理和详解

    在介绍JSONP之前,先简单的介绍一些JSON.JSON是JavaScript Object Notation的缩写,是一种轻量的.可读的基于文本的数据交换开放标准.源于JavsScript编程语言中 ...

  7. JSONP原理以及安全问题

    JSONP介绍 JSONP全称是JSON with Padding ,是基于JSON格式的为解决跨域请求资源而产生的解决方案.他实现的基本原理是利用了 HTML 里 元素标签没有跨域限制 JSONP原 ...

  8. JS函数简单的底层原理 -变量重复声明无效,隐式申明,变量提升,函数提升,以及堆栈内存的变化

    JS函数简单的底层原理 (个人理解): 1. 已经使用var申明且赋值,若再次申明,则第二次申明(不赋值)无效. 2.在同一个作用域下,只要是发生了同名,且变量完成赋值,后者会覆盖前者.存在两个相同的 ...

  9. [EDA] 2.2 简单PLD结构原理-潘松版

    2.2 简单PLD结构原理 知识点: 2.1 PLD概述 名称概念: PLD:Programmable Logic Device,可编程器件 PLD的分类:1.按集成度分,可分为简单PLD和复杂PLD ...

  10. pureMVC简单示例及其原理讲解四(Controller层)

    本节将讲述pureMVC示例中的Controller层. Controller层有以下文件组成: AddUserCommand.as DeleteUserCommand.as ModelPrepCom ...

最新文章

  1. oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。
  2. biopython安装_BioPython的安装和使用
  3. Linux C编程--目录文件操作
  4. 建立和使用Maven项目骨架Archetype
  5. android surface编程,Android编程之SurfaceView实例详解
  6. 在Blazor中构建数据库应用程序——第1部分——项目结构和框架
  7. Fence Repair(不会优先队列的看过来)
  8. matlab-高数 meshgrid 笛卡尔乘积(直积)
  9. opencv 实现一个鼠标绘图小程序
  10. mysql规格单位转化_存储单位的换算(KB, MB, GB)
  11. npm run build时报错“caniuse-lite is outdated”
  12. Oracle基本认识
  13. windows7远程桌面
  14. 百分点感知智能实验室:计算机视觉理论和应用研究
  15. 【sdx62】SBL阶段读取GPIO的状态操作
  16. 2012服务器系统自动重启,Windows server 2012r2 自动重启
  17. 2022年网络安全的八大趋势
  18. pygame 外星人飞船开发摘要
  19. Windows server 2008、2012、2016搭建sftp服务(超级简单)
  20. 安卓逆向——某宝APP抓包之环境对比 (一)

热门文章

  1. 分享 野人老师-高级信息系统项目管理师-全部的课程资料
  2. 象棋人工智能算法的C++实现(五)——人机博弈的高阶算法
  3. 【简单的四足机器人制作(基于STC15/LPC845)】
  4. devexpress,dotnetbar控件
  5. 智能红绿灯自动控制系统分析
  6. linux 安装触摸版驱动程序,在ubuntu和linux上配置触摸屏驱动程序启用触摸屏
  7. KVM虚拟化技术(理论理解以及虚拟化平台搭建步骤)
  8. rtmp协议java实现_RTMP 协议的一个 Java 实现:Flazr
  9. 一、Python数据挖掘(环境篇——Anaconda与Jupyter Notebook)
  10. NLPIR中文分词器的使用