什么是JSONP及其实现原理

article/2025/9/30 20:00:13

一、为什么会有JSONP

解决跨域问题;因为XMLHttpRequest有同源策略,而在实际开发中又常有跨域的需求,早期开发者为解决跨域问题,设计出了JSONP这个东西

二、JSONP长什么样

类似JSON,一种JSON的变体,样式就像是包在函数的参数里
函数名({“data”:”数据”}),一般情况下这个函数都是个回调函数即
callback({“data”:”数据”})

三、JSONP的实现原理

利用 <script>标签可以跨域get引入js脚本;通过<script><img><iframe><link>标签的跨域请求不受同源策略的约束,这里不受约束指的是引入外部的script、img、iframe等“文件”,但会限制这些引入的内容对当前内容的操作

四、例子

假设在远端服务某个项目中有一个叫
test.js的js文件,这个项目的域名是https://dddd.com/路径是xxx/xx/test.js,那么就可以通过https://dddd.com/ xxx/xx/test.js访问到该文件,如下:
在这里插入图片描述
通过<script>引入的js脚本响应成功后会立即执行,因此要实现JSONP跨域请求还需要服务器端配合接口,动态生成一个js代码并将要返回的数据封装在返回的js脚本中如上面的test.js文件,这时请求端还应提前定义好被调用的函数(回调函数),以及在请求上加入参数,且这个参数是一个回调函数,如下:
在这里插入图片描述
上述就是利用<script>标签跨域get引入js脚本实现跨域请求即JSONP

五、其他

:在研究JSONP的时候,遇到了一些如下同样的疑问,以及相应的回答,遂摘录下来供大家商榷

①Ajax、XHR、同源策略的关系

优质回答:Ajax(Asynchronous JavaScript + XML)即异步JavaScript加XML技术;XHR即XMLHttpRequest对象,该对象的作用就是实现发送服务器请求和获取响应异步从服务器获取数据,该技术是推动Ajax发展的关键技术;同源策略是浏览器站在安全的角度制定的一种从服务器获取数据的限制,这个安全限制可以防止一些恶意行为,通过XHR进行Ajax通信会被同源策略限制。

②为什么<script><img><iframe><link>标签不受同源策略限制

优质回答:1.<script><img><iframe><link>跨域请求是在同源策略制定之前就已经实现的技术;2.同源策略不是统一的干净公理,它实际上是一组特定的规制和特殊情况,这些规则和特殊情况已经成为现代web的化石,您无法使用正确捕获基本的细节的简短描述来定义同源策略,因为特殊情况在实践中实际上很重要

概括下来就是:<script><img><iframe><link>跨域请求早就有了,而且同源策略也只是对常用的规则的整理设计,但是并不能因为常用的规则而去取消特殊的情况,因为在某些场景特殊情况也很重要。

③为什么制定同源策略后不取消<script><img><iframe><link>标签的跨域请求,这不是存在安全风险吗

优质回答:取消这种跨域能力会破坏很多现有的网络

④通过<script>和<img>标签实现跨域请求的区别

优质回答:<img>标签只能通过监听onload和onerror事件知道什么时候接收到了响应进而进行后续处理,但是无法获取数据;<script>是获取一个可执行的js程序,且在请求响应成功后会立刻执行,这就为有数据返回的跨域请求提供了可能。


http://chatgpt.dhexx.cn/article/QSEFkHH9.shtml

相关文章

Ajax中的JSONP

同源策略和跨域的概念 什么是同源 如果两个页面的协议&#xff0c;域名和端口都相同&#xff0c;则两个页面具有相同的源。 什么是同源策略 同源策略(英文全称Same origin policy)是浏览器提供的一个安全功能。 MDN官方给定的概念:同源策略限制了从同一个源加载的文档或脚本如…

JSONP解决跨域问题

一、什么是同源 概念&#xff1a;如果两个页面的协议、域名和端口都相同&#xff0c;则这两个页面具有相同的源。 二、什么是同源策略 概念&#xff1a;是浏览器提供的一个安全功能。 三、什么是跨域 概念&#xff1a;同源指的是两个URL的协议、域名、端口号一致&#xff0c…

关于Jsonp,你知道多少?

# 一、Jsonp为跨域而生 为什么会出现跨域问题&#xff1f; &#x1f64b;‍♀️出于浏览器的同源策略限制。 什么是源? &#x1f64b;‍♀️源&#xff08;origin&#xff09;就是协议&#xff08;protocol&#xff09;&#xff0c;主机&#xff08;host&#xff09;和端口…

JSONP原理及实现

文章目录 基本原理执行过程优缺点 案例分析前期准备后端代码前端简单实现jQuery中ajax实现封装一个JSONP方法简易版同时多个请求最终版JSONP方法 基本原理 基本原理&#xff1a; 主要就是利用了 script 标签的src没有跨域限制来完成的。 执行过程 前端定义一个解析函数(如: …

什么是 JSONP?

前言 首先我们得先了解JSONP是怎么产生的。 最开始跨域请求数据没有现在方便&#xff0c;Ajax直接请求普通文件存在跨域无权限访问的问题&#xff0c;然后聪明的程序员想出了一套非官方的解决办法&#xff0c;程序员发现凡是带有“src”这个属性的标签都拥有跨域的能力&#x…

jsonp介绍

为什么要知道jsonp&#xff0c;jsonp的作用是什么&#xff1a; Jsonp(JSON with Padding) 是 json 的一种"使用模式"&#xff0c;可以让网页从别的域名&#xff08;网站&#xff09;获取资料&#xff0c;即跨域读取数据。原则上浏览器是不允许请求不同域名的数据的&…

前端跨域jsonp的细节,挡住面试官的连环提问

1.前言 在前端面试中&#xff0c;想必每一个人都会被问到跨域相关的问题&#xff0c;背过八股文的小伙伴肯定对跨域的解决对答如流&#xff0c;常见的跨域解决方案在网上有很多整理&#xff0c;但是如果问到实现的细节&#xff0c;你是否能够手写实现或者深入解读呢&#xff1f…

jsonp 的原理及应用

1. 什么是jsonp jsonp全称json with padding&#xff0c;填充式的json,jsonp是为跨域而生的 2. 那么有哪些标签可以跨域呢 <img src""> //图片 <link href""> //css <script src""> //程序我们可以使用script来帮助我们跨域…

JSONP详解

Jsonp(JSON with Padding) 是 json 的一种”使用模式”&#xff0c;可以让网页从别的域名&#xff08;网站&#xff09;那获取资料&#xff0c;即跨域读取数据。 为什么我们从不同的域&#xff08;网站&#xff09;访问数据需要一个特殊的技术(JSONP )呢&#xff1f;这是因为同…

使用JSONP解决跨域

1.首先需要知道什么是跨域 浏览器从一个域名的网页去请求另一个域名的资源时&#xff0c;域名、端口、协议任一不同&#xff0c;都是跨域 出于浏览器的同源策略限制 同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功…

虚拟机安装ubuntu全教程

主要流程 - 准备安装包&#xff08;包括ubuntu镜像、虚拟机压缩包、分区助手)安装虚拟机安装ubuntu、安装vmtool&#xff08;解决ubuntu全屏的问题&#xff09; 一、准备安装包 下载地址&#xff1a;http://pan.baidu.com/s/1hr39WGG 密码&#xff1a;tttq 二、安装虚拟机 …

ubuntu服务器ubuntu Server安装教程

记录一次系统安装到拷贝大数据文件的过程。 说在前: 1.系统U盘启动安装软件Rufus&#xff0c;自行百度下载2.下载Ubuntu Server镜像&#xff0c;官方地址即可一、安装 1、选择Ubuntu Server 2、语言选择&#xff0c;默认英语 3、有网络的话选择第一项升级系统&#xff0c;…

ubuntu安装图文教程

作为目前世界上最安全的操作系统&#xff0c;Linux逐渐被大多数人使用&#xff0c;而ubuntu作为Linux分支中最华丽美观的操作系统&#xff0c;有必要有一个好多安装教程 ubuntu系统是一个linux操作系统;ubuntu安装教程的每个版本类似&#xff0c;下面给您带来的是12.04版本的ub…

Ubuntu/Windows 双系统安装教程

前言 由于工作所用的开发环境是linux的&#xff0c;所以决定把自己电脑装一个windows/ubuntu双系统。Ubuntu不同版本的物理机安装流程都是一样的&#xff0c;而且极其简单&#xff0c;不要怕自己没装过把电脑整坏了&#xff0c;大不了连windows一起给它重装了。 双系统安装步…

安装Ubuntu系统详细教程

一. 前言 本篇文章详解介绍一下如何安装Ubuntu系统&#xff0c;笔者在安装的过程中踩过很多坑&#xff0c;重装了很多次&#xff0c;现在把安装过程中遇到的问题也列出来&#xff0c;供大家参考。 二. 准备工作 这个环节很重要&#xff0c;工欲善其事&#xff0c;必先利其器。 …

VMware虚拟机安装Ubuntu(超详细图文教程)

VMware虚拟机安装Ubuntu 1 Ubuntu下载2 打开VMware3 然后就可启动虚拟机4 等待吧5 重启后就完了&#xff0c; 到这就基本结束了6 下面可以调一下软件下载源 1 Ubuntu下载 Ubuntu下载地址&#xff1a;点这里 注&#xff1a;但官网下载比较慢 也可关注公众号Time木回复&#xf…

Ubuntu系统安装教程

1、首先打开VMware&#xff0c;然后点击创建新虚拟机 2、点击完新建虚拟机后&#xff0c;选择稍后安装操作系统&#xff0c;点击下一步 3、选择Linux&#xff0c;版本选择Ubuntu64位&#xff0c;点击下一步 4、虚拟机名称自己取&#xff0c;位置选择一个盘&#xff0c;创建一…

使用VMware安装Ubuntu虚拟机 - 完整教程

【前言】 本教程将演示通过 VMware 安装 Ubuntu &#xff0c;请提前下载好以下文件哦&#xff1a; ① VMware 软件 ② Ubuntu 的 光盘镜像文件&#xff08;.iso&#xff09; 【下载地址】 VMware 官网链接 https://www.vmware.com/ 本教程使用版本&#xff1a;VMware Worksta…

Ubuntu详细安装教程(小白友好型)

鼠标右键 ------>> 以管理员身份运行   2.右键“文件”——>>“新建虚拟机”   选择“自定义”&#xff0c;“下一步”         “下一步”         “稍后安装操作系统”——>>“下一步”         “Linux”——>>“Ubuntu64位”…

ubuntu 21.04安装教程

ubuntu 21.04安装教程 制作启动U盘*&#xff08;虚拟机安装此步省略&#xff09;*U盘刻录工具balenaEtcher 开始安装选择语言选择键盘布局网络设置代理设置源设置源设置为国内源&#xff0c;这里设置为阿里源&#xff1a; 分区设置用户名工具安装安装完成![在这里插入图片描述]…