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

爬虫学习6

JSON(JavaScript Object Notation)和JSONP(JSON with Padding)是两个不同的概念,它们的主要区别在于用途和实现方式:

### JSON(JavaScript Object Notation)

1. **定义:** JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但是独立于语言,可以被多种编程语言解析。
2. **用途:** JSON用于在网络中传输数据,特别是在Web开发中,用于客户端和服务器之间的数据交换。
3. **格式:** JSON数据格式类似于JavaScript对象字面量,但是更加严格,例如属性名必须用双引号括起来。
4. **示例:**

   {
       "name": "John",
       "age": 30,
       "city": "New York"
   }


5. **解析:** 可以在多种编程语言中解析JSON,通常有专门的库或内置函数来处理JSON数据。

### JSONP(JSON with Padding)

1. **定义:** JSONP是一种跨域数据请求的解决方案,它通过动态创建`<script>`标签来绕过浏览器的同源策略限制。
2. **用途:** JSONP主要用于在不支持CORS(跨源资源共享)的旧版浏览器中,从不同源的服务器获取数据。
3. **格式:** JSONP数据格式在JSON的基础上,通过一个回调函数名进行“填充”,使其成为一段可执行的JavaScript代码。
4. **示例:**

   myCallbackFunction({
       "name": "John",
       "age": 30,
       "city": "New York"
   });


   在这个例子中,`myCallbackFunction`是客户端定义的回调函数,服务器响应时会将JSON数据包装在这个函数调用中。
5. **解析:** JSONP不需要解析,因为它通过JavaScript执行回调函数来传递数据,而JSON需要在客户端使用JSON解析函数(如`JSON.parse()`)来解析成对象。

### 主要区别

- **安全性:** JSONP存在安全风险,因为它允许执行来自远程服务器的任意JavaScript代码,而JSON通常被认为是安全的。
- **跨域能力:** JSONP允许跨域请求,而标准的JSON请求(如通过AJAX)受到同源策略的限制。
- **HTTP方法:** JSONP通常只支持GET请求,而JSON可以通过AJAX、Fetch API等支持多种HTTP方法(GET、POST、PUT等)。
- **现代替代:** 随着CORS和WebSockets等技术的发展,JSONP的使用越来越少,因为它存在安全问题和功能限制。

总的来说,JSON是一种数据格式,而JSONP是一种利用JSON实现跨域请求的技术。随着现代Web技术的发展,JSONP逐渐被更安全、更灵活的技术所取代。
 


http://www.kler.cn/a/383865.html

相关文章:

  • Java算法OJ(6)归并分治
  • 用 Python 写了一个天天酷跑(附源码)
  • Ansys Zemax | 手机镜头设计 - 第 4 部分:用LS-DYNA进行冲击性能分析
  • Docker lmdeploy 快速部署Qwen2.5模型openai接口
  • 单臂路由实现不同VLAN之间设备通信
  • sqli-labs(第一关)
  • gerrit 搭建遇到的问题
  • mac 安装 nodemon
  • Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
  • 告别生硬电子音,这款TTS软件让语音转换更自然动听
  • 反射基础
  • 6-1.Java 面向对象 - 初级(对象与属性、对象与方法、递归、重载、可变参数、作用域、构造器、对象创建流程详解、this 关键字)
  • 信息学科平台系统设计与实现:Spring Boot技术手册
  • windows11 安装 maven
  • 【MFC编程(一)】MFC概述
  • 非洲:人口红利下的市场蓝海与五金需求的无限可能
  • leetcode-643. 子数组最大平均数 I
  • Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
  • 右旋圆极化散射后的stocks矢量 与T3矩阵的关系
  • 【UE5】Cesium GlobePawn 如何Fly To
  • YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路
  • CertiK发现三星区块链密钥库的高风险漏洞,第3次获得致谢
  • qt QHeaderView详解
  • C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(3)
  • lerna+umi ‘max‘ 不是内部或外部命令,也不是可运行的程序
  • ./bin/mindieservice_daemon启动成功