当前位置: 首页 > news >正文

JSONP的跨域原理

JSONP,是啥?

JSON with Padding是JSON的一种“使用模式”

何为跨域?

同源策略是由Netscape提出的的一个著名的安全策略,现在所有支持javascript的浏览器都会使用这个策略,所谓同源就是指,域名协议端口号 相同,当在一个浏览器打开两个网站的页面时,某一个网站在执行js脚本时会检查访问的资源是否属于本域范围,只有本域范围内的资源才能被访问。否则,称之为跨域。

如何实现跨域,先说说html中的script?

  • html标签的src属性没有同源限制(支持跨域),浏览器解析script标签时,会自动下载src属性值(url)指向的资源。
  • script标签指向的资源文件被下载后,其中的内容会被立即执行
  • 服务器端的程序会解析src属性值中的url传递的参数,根据这些参数针对性返回一个/多个函数调用表达式,这些函数调用表达式的参数就是客户端跨域想得到的数据
  • 服务器生成、返回的文件中,表达式调用的函数是已经在本地提前定义好的,而参数就是希望从跨域服务器拿到的数据

JSONP跨域的原理

就是利用<script>标签没有跨域限制的“漏洞”来达到与第三方通讯的目的。
  1. 当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如:<script src="http://www.example.net/api?param1=1&param2=2"></script>        并提供一个回调函数来接收数据。
  2. 第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如callback({"name":"hax","gender":"Male"}) 、
  3. 浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。


相关文章:

  • Spring Boot 部署与服务配置
  • FormData的使用及input文件上传
  • 工业强基 - 头条新闻
  • CPU和内存 程序(线程)关系
  • 双循环递归匹配路由表
  • editplus 注册码
  • 在窗体中把DataGridView中的数据导出Excel
  • Linux学习笔记4月19日任务
  • 《Linux学习并不难》用户管理(1):Linux用户账户分类
  • Java-JUC(八):使用wait,notify|notifyAll完成生产者消费者通信,虚假唤醒(Spurious Wakeups)问题出现场景,及问题解决方案。...
  • 最简单的curl扒网页
  • 如何在微信小程序中使用async/await
  • 实践详细篇-Windows下使用VS2015编译安装Caffe环境(CPU ONLY)
  • 阿里云副总裁:自主可控的云比拿来主义能走更远
  • awk命令详解
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • axios 和 cookie 的那些事
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • CSS实用技巧干货
  • eclipse的离线汉化
  • java中具有继承关系的类及其对象初始化顺序
  • learning koa2.x
  • mockjs让前端开发独立于后端
  • 基于webpack 的 vue 多页架构
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 排序(1):冒泡排序
  • 跳前端坑前,先看看这个!!
  • 学习HTTP相关知识笔记
  • 学习笔记:对象,原型和继承(1)
  • 中文输入法与React文本输入框的问题与解决方案
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​ssh免密码登录设置及问题总结
  • $.ajax,axios,fetch三种ajax请求的区别
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (力扣)循环队列的实现与详解(C语言)
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)Neo4j下载安装以及初次使用
  • (转)Linux下编译安装log4cxx
  • .net framework4与其client profile版本的区别
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET开源快速、强大、免费的电子表格组件
  • .Net面试题4
  • ::前边啥也没有
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @KafkaListener注解详解(一)| 常用参数详解
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ 蓝桥杯Web真题 ]-布局切换
  • [04]Web前端进阶—JS伪数组
  • [AIGC 大数据基础]hive浅谈
  • [Angular 基础] - 表单:响应式表单
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [CF543A]/[CF544C]Writing Code