GET和POST的区别、Promise的两个方法及POST请求常见的参数类型

2023-11-15

GET和POST的区别(可能有纰漏)

区别 GET POST
参数的位置不同 ①GET把请求参数直接暴露在URL上,因此GET比POST更不安全,不能用来传递敏感信息 ②GET请求发送的参数会被完整的保留在浏览器历史记录里 ①POST把请求参数放在Request Body请求体中,即地址栏上不可见,所以POST比GET更安全②POST请求发送的参数不会保留在浏览器历史记录中
传输的数据大小不同 GET一般来说提交的数据最大是2K POST理论上没有限制
传输的数据类型不同 GET只接收ASCII字符 POST没有限制
产生的数据包不同 GET产生一个TCP数据包 POST产生两个TCP数据包

注意:FireFox的POST请求就只发送一个TCP数据包。

到底发多少个tcp包,不是http协议的事情,是操作系统tcp协议栈和框架代码里write调用的事情。

对此问题的详解请移步:文章一文章二

从w3schools得到的标准答案的区别如下:

GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被Bookmark,而POST不可以。
 
GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。
 
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 GET请求在URL中传送的参数是有长度限制的,而POST没有。
 
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
 
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。 GET参数通过URL传递,POST放在Requestbody中


Promise.all()方法

Promise.all 方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。

var p = Promise.all([p1,p2,p3]);

上面代码中,Promise.all 方法接受一个数组作为参数,p1、p2、p3 都是 Promise 对象的实例。(Promise.all 方法的参数不一定是数组,但是必须具有 iterator 接口,且返回的每个成员都是 Promise 实例。)

p 的状态由 p1、p2、p3 决定,分成两种情况。

(1)只有p1、p2、p3的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。

(2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。

下面是一个具体的例子。

// 生成一个Promise对象的数组
var promises = [2, 3, 5, 7, 11, 13].map(function(id){
  return getJSON("/post/" + id + ".json");
});
 
Promise.all(promises).then(function(posts) {
  // ...  
}).catch(function(reason){
  // ...
});

Promise.race()方法

Promise.race 方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。

var p = Promise.race([p1,p2,p3]);

上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的Promise实例的返回值,就传递给p的返回值。

如果Promise.all方法和Promise.race方法的参数,不是Promise实例,就会先调用下面讲到的Promise.resolve方法,将参数转为Promise实例,再进一步处理。


POST请求常见的参数类型

1. application/json

用来告诉服务端消息主体是序列化的JSON字符串,需要用到 JSON.stringify() 将参数转化为JSON字符串。

2. multipart/form-data

一般用来上传文件,各大服务器的支持也比较好。所以我们使用表单上传文件时,必须让表单的 enctype 属性值为 multipart/form-data

3. application/x-www-form-urlencoded

浏览器的原生form表单如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

jQuery的Ajax请求中如果不设置 contentType 属性,默认也会以此种方式提交数据。

application/x-www-form-urlencodedmultipart/form-data 都是浏览器原生支持的

4. text/xml

一般用来发送文本内容,它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GET和POST的区别、Promise的两个方法及POST请求常见的参数类型 的相关文章

随机推荐

  • Coverity 代码静态安全检测

    转自 http blog csdn net yasi xi article details 8349985 最近公司在推行代码Security检查 使用了Coverity代码静态检测工具 功能很强大 超乎我的期望 主要功能如下 列出不会被执
  • inline在c语言作用,[转载]C语言标准C99 内联函数(inline)总结

    1 定义 它们看起来象函数 运作起来象函数 比宏 macro 要好得多 使用时还不需要承担函数调用的开销 当内联一个函数时 编译器可以对函数体执行特定环境下的优化工作 这样的优化对 正常 的函数调用是不可能的 2 规则 inline关键字必
  • 【java】JDBC链接

    文章目录 一 JDBC API 二 JDBC加载 三 JDBC连接 MySQL8 MySQL5 四 API常用方法 Statement ResultSet 五 PreparedStatement 1 为什么要使用PreparedStatem
  • 英区智齿发炎自救 -- 牙周炎,抗菌治疗+止疼治疗+中医药辩证治疗

    英区智齿发炎自救 periodontitis 左下角半包半露的智齿又发炎了 这次来势凶猛 前阵子发炎我用Corsodyl漱口水 饭后盐水漱口就足够把他压下去 这次用了两天牙龈还是肿上天 严重的话超级有效的组合是阿莫西林 奥 甲硝唑 配合Co
  • open函数返回值为0

    open函数是我们开发中经常会遇到的 这个函数是对文件设备的打开操作 这个函数会返回一个句柄fd 我们通过这个句柄fd对设备文件读写操作 我们在对这个fd作判断的时候 经常会用到 fd open filename O RDONLY If f
  • [游戏开发]俄罗斯方块实现

    0 前言 整理一下 游戏开发的入坑作 俄罗斯方块 这里包含了 c 实现的俄罗斯方块处理 控制台 有界面 以及后续用 unity 做的版本 项目的代码太多 就都放在链接了 可以直接下载好了 就放百度云好了 也不会污染代码库 挠头 项目链接如下
  • 魔术师猜数

    在一种室内互动游戏中 魔术师要每位观众心里想一个三位数abc a b c分别是百位 十位和个位数字 然后魔术师让观众心中记下acb bac bca cab cba五个数以及这5个数的和值 只要观众说出这个和是多少 则魔术师一定能猜出观众心里
  • docker容器中elasticsearch配置跨域访问(elasticsearch-head插件访问不到es集群)

    问题 docker容器中elasticsearch配置跨域访问 elasticsearch head插件访问不到es集群 原因 elasticsearch head插件访问不到es集群 是因为调用过程中出现了跨域问题 解决方法 docker
  • 基于宝塔面板成功配置网站SSL安全证书(支持https访问)

    前提条件 你熟悉宝塔面板搭建网站 我这个建站老鸟都在用宝塔面板建站 主要就是图它的节省时间和精力 大家有不熟悉宝塔面板使用的 可以查看文章 宝塔面板添加WordPress站点详细图文教程 之后你就完全可以入门了 你拥有一台云服务器和一个万网
  • 服务器基准测试

    https bp aliyun com detail 189 Version 5 1 3 Based on the Byte Magazine Unix Benchmark Multi CPU vers
  • 每天Leetcode 刷题 初级算法篇-缺失数字

    题目要求 缺失数字 力扣题解 代码 import java util Arrays program mydemo description 缺失数字 author Mr zeng create 2021 03 03 09 49 public
  • 【ChatGPT】原生JS实现ChatGPT小型Demo

    初入前端的小白也可以尝尝鲜 无需科学上网 调用API2D的接口进行连接 也可以换成官方API 均有免费额度 第一步 注册API2D https api2d com r 187255 使用GitHub或邮箱进行注册登录 通过 GitHub 注
  • MySql详解(一)--架构篇

    MySQL架构篇 逻辑架构 Connectors 连接器 指的是不同语言中与SQL的交互 ManagementServeices Utilities 系统管理和控制工具 ConnectionPool 连接池 管理缓冲用户连接 线程处理等需要
  • no node folder is found in data folder(s), node has not been started yet?]

    报错 no node folder is found in data folder s node has not been started yet ES 角色调整后报该错误 过程 把 Master DataNode 节点 切换为纯 Mast
  • Linux 下ELF 文件理解及C/C++代码实现

    ELF 就是 Executable and Linkable Format 它定义了可重定位文件 可执行文件和 共享目标文件的结构 这种格式能让操作系统正确解释文件中的机器指令 理解ELF文件 目标文件 格式主要三种结构 可重定向文件 Re
  • perl实现,匹配并打印一个段落

    有一个应用场景 实现后 觉得还是记录下来 以后还会遇到的 举例 根据 这样的行 匹配并打印该段落范围的所有行 另外一点 打印出的内容 只允许存在max最大值和min最小值 sdsdfsdf 1123123 1sdfs 2saas max 0
  • 最浅显易懂的Django系列教程(49)-redis教程

    redis教程 概述 redis是一种nosql数据库 他的数据是保存在内存中 同时redis可以定时把内存数据同步到磁盘 即可以将数据持久化 并且他比memcached支持更多的数据结构 string list列表 队列和栈 set 集合
  • 数据分析基础理论

    什么是数据分析 收集大量数据 研究和概括总结 提取有用的信息形成概 帮助做出判断 以便采取适当行动 数据分析是指用适当的统计分析方法对收集来的大量数据进行分析 将他们加以汇总和理解 以求最大化的开发数据功能 发挥数据的作用 数据分析的价值
  • CentOS7网络配置

    本文是我从另外三个文章中整合而来 用于自存 如有侵权请联系我删除 CentOS 7教程 二 网络设置 知乎 zhihu com VMware安装 Linux下CentOS7的配置及网络环境的配置 最新版特别全 centos7 配置 Cong
  • GET和POST的区别、Promise的两个方法及POST请求常见的参数类型

    GET和POST的区别 可能有纰漏 区别 GET POST 参数的位置不同 GET把请求参数直接暴露在URL上 因此GET比POST更不安全 不能用来传递敏感信息 GET请求发送的参数会被完整的保留在浏览器历史记录里 POST把请求参数放在