Http POST 提交数据的四种方式解析

什么是HTTP POST请求?初学者指南与示范 HTTP(超文本传输协议)是Web的基础协议,用于在客户端(如浏览器)和服务器之间传输数据。HTTP请求方法有多种,最常见的包括GET和POST。本文将详细介绍HTTPPOST请求,包括其用途、工作原理及示范。 阅读详情

我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。HTTP 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。

协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。但是,数据发送出去,还要服务端解析成功才有意义。

服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。

POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。下面就正式开始介绍它们。

在服务器端判断request来自Ajax请求(异步)还是传统请求(同步):


xmlHttpRequest.png

application/x-www-form-urlencoded (默认常用的)

这应该是最常见的 POST 提交数据的方式了。浏览器的原生 <form> 表单,如果不设置 enctype
属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。例如 PHP 中,$_POST['title'] 可以获取到 title 的值,$_POST['sub'] 可以得到 sub 数组。


x-www-form-urlencoded.png

multipart/form-data

这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 <form> 表单的 enctyped
等于 multipart/form-data。直接来看一个请求示例:

提示 input type=file 浏览器处于安全考虑 , 必须操作赋值,不能直接改value,
比如canvas 直接生成图片之后上传 就不能使用 input type=file。可以直接把得到的图片转换成 base64 上传


multipart/form-data.png

boundary 文件分割线

application/json

application/json 这种方案,可以方便的提交复杂的结构化数据, 这个 Content-Type 作为响应头大家肯定不陌生。现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。

由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。

JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用 AngularJS 中的 Ajax 功能,默认就是提交 JSON 字符串。例如下面这段代码:

var data = {'title':'test', 'sub' : [1,2,3]};
$http.post(url, data).success(function(result) {
    ...
});

最终发送的请求是:

Content-Type: application/json;charset=utf-8
 {"title":"test","sub":[1,2,3]}

application/json.png

JSON.parse()和JSON.stringify()


JSON.png

text/xml

现在几乎不用

默认情况下,标准的跨域请求是不会发送cookie等用户认证凭据的,XMLHttpRequest 2的一个重要改进就是提供了对授信请求访问的支持。
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://www.xxx.com/api');
xhr.withCredentials = true;
xhr.onload = onLoadHandler;
xhr.send();

Access-Control-Allow-Credentials: true


Access-Control-Allow-Credentials.png
ESP32网络开发实例-HTTP-POST请求 在物联网领域,ESP32是一款功能强大的开发板,它具备Wi-Fi和蓝牙功能,可以用于连接到互联网,并与其他设备进行通信。本文将重点介绍ESP32的网络开发实例,特别是如何进行HTTP-POST请求的操作。通过本文的指导,您将能够深入了解ESP32的网络开发,并在自己的项目中应用这些知识。 阅读详情

相关推荐

HTTP协议:接口测试_发送请求_post方法

Requests的POST方法 发送Post请求 语法: r = requests.post(url, data=None, json=None, **kwargs) 1、从上面语法中可以看出data和json参数默认等于None,即为None时,不会添加到请求中(GET请求中headers、cookies、params参数等于None时也不会添加到URL中) 2、post请求是...............

不怕猫的耗子A 8093

HTTP 中 POST 提交数据的四种方式详解

HTTP 中 POST 提交数据的四种方式详解 首先说一下为什么写这篇文章,以前写客户端的时候,要经常调用后端的接口,一般很多公司的接口,都是统一 POST 提交方式 服务端响应的是 JSON 格式字符串,方便统一管理,当时对 POST 不太清楚,开始的时候,不觉得有啥 但是真正等到自己写一个独立的技术社区的时候,也就是www.helloworld.net,需要上传,需要表单提交等 才发现,不懂这些,用到了的时候,很是费劲,很耽误时间。 下面就当是复习了,学习一下GET,POST这两种最常用的

APItesterCris的博客 3万+

大规模SoC芯片Hierarchical Flow Calibre LVS教程

大规模SoC芯片Hierarchical Flow Calibre物理验证LVS实现教程

weixin_37584728的博客 1200

http post请求

1.引入所需要的jar包 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> 2.编写工具类(JSON格式) package com.spri

zl_dalao的博客 2735

深度学习之Pytorch---本人踩过的坑(报错总结)第十篇

深度学习之Pytorch安装时遇到的问题—本人踩过的坑(报错总结) 报错一:pip install torchvision 出现“由于目标计算机积极拒绝,无法连接”的问题 解决方案:找到自己浏览器的工具或选项,我的是火狐,具体解决方案如下图 然后找到桌面左下角,点击搜索internet,然后点击internet选项 最后回到Anaconda Prompt命令行输入pip install...

qq_41570307的博客 1914

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4543

http POST 提交数据的四种方式解析

我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。HTTP 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 协议规定 POST 提交的数据必须放在消息主体(entity-bod...

LeveBe的博客 1839

谷歌(Google) Pixel 8/9 Pro(xl)如何获取 root 权限

谷歌(Google)Pixel8/9Pro(xl)等系列手机破解后,会在你的init_boot.img同路径生成一个magisk_patched.img,把这个文件拷贝到adb目录下,稍后还得把它刷回手机,这样手机才能获得Root权限,因为安卓14、15以后的内核结构调整,和Pixel7及以下的6、5、4、3、2等系列手机破解稍微不一致。因为ROOT权限的获取,需要使用ROM中的内核文件,个人强烈建议在官网下载ROM,直接刷最新版,其他地方的ROM如果没有校验码,请自行斟酌是否使用。

bugsycrack的博客 3489

从HTTP四种POST 提交数据方式,引申JSON与JSONP区别

HTTP协议是以ASCII码传输,建立在TCP/IP协议之上的应用层规范。 规范把HTTP请求分为三个部分:状态行、请求头和请求主体。 -状态行 GET 请求报文示例: Host User-Agent Connection:keep-Alive POST 请求报文示例 HOST User-Agent Content-Type: application/x-www-form-urlen...

BlueBirdssh的专栏 615

Jetson工业级应用指南:用Orin NX 16GB打造多摄像头AI质检系统

本文详细介绍了如何利用NVIDIA Jetson Orin NX 16GB构建高效的多摄像头AI质检系统,涵盖硬件选型、软件优化及产线部署全流程。通过100 TOPS的AI算力和多路视频处理能力,Orin NX在工业4.0时代展现出卓越的实时缺陷检测性能,特别适合嵌入式AI应用场景。

Pepper的专栏 308

莆田市C++专项选拔第一轮题4

现在小明同学想要从两堆硬币中各选择一枚硬币,使得两枚硬币的面值之和 不超过 k。不同的硬币组合,就算面值相同,也视为不同的方案。现在他把这些硬币分成了两堆,已知两堆硬币分别有 n 和 m 枚硬币。可选方案有: (1,2), (1,1), (1,1), (5,2), (5,1), (5,1),共 6 种。第一行三个整数 n, m, k,分别表示第一堆硬币的数量,第二堆硬币的数量,以及面值之和的上限。对于30%的数据,1 ≤ n , m ≤ 1000 , 1 ≤ b , c ≤ 1000。

lpstudio的博客 925

四种常见的 POST 提交数据方式

提醒:本文最后更新于888天前,文中所描述的信息可能已发生改变,请谨慎使用。 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP ...

风华绝代的博客 3058

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

跟踪线程(Tracking Thread)作用:负责处理每一帧图像,进行相机位姿的估计和定位。它首先执行与前一帧图像的特征匹配,然后通过仅运动(motion-only)BA(Bundle Adjustment)优化位姿。如果跟踪失败,它会尝试在所有地图中进行重定位。此外,跟踪线程还负责决定何时插入新的关键帧,以及何时将关键帧从局部地图中移除。详细介绍见局部建图线程(Local Mapping Thread)作用:管理局部地图,向活跃地图添加关键帧和点,移除多余的关键帧和点。

曾经也曾立志 1004

Python提交 post方法之‘Content-Type‘: multipart/form-datay

最近写s2_061 Python脚本得时候遇到了POST 提交 'Content-Type': multipart/form-data 这个问题,然后查阅资料开始解决。 一、首先说一下POST 提交数据方式常用的四种方式 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 HTTP 协议是以 ASCII 码传输,

深耕网络安全领域,聚焦护网行动(HW)、渗透测试、等级保护(等保)、CTF 竞赛四大核心方向,提供技术干货、实战经验与行业洞察。 5541

C# HttpClient完全攻略:从入门到精通只需5步

HttpClient是.NET框架中用于发送HTTP请求和接收HTTP响应的类。它基于异步编程模型,使得网络操作更加高效和灵活。

java专栏 1579

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

四种 POST 提交数据方式

转自:https://imququ.com/post/four-ways-to-post-data-in-http.html 文章目录 application/x-www-form-urlencoded multipart/form-data application/json text/xml HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST...

LYLLOAD的专栏 833

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

application/json 四种常见的 POST 提交数据方式

四种常见的 POST 提交数据方式     HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协

anmoyyh的博客 6886

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

四种常见的 POST 提交数据方式 专题

定义和用法 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。 enctype属性值 值描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编码。 在使用...

weixin_43689953的博客 2177

java post 多个参数_四种常见的post请求中的参数形式

1)、HTTP 协议是以ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。2)、协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。3)、数据发送出去,...

weixin_31669073的博客 1万+

GET和POST的区别,POST四种数据格式

1.语义不同,GET是获取数据,POST是提交数据。2.HTTP规定GET比POST安全,因为GET只作读取,不会改变服务器中的数据。但这只是规范,并不能保证请求方法的实现也是安全的。3.GET请求会把附加参数带在URL上,而POST请求会把提交数据放在报文内。在浏览器中,URL的长度会被限制,所以GET请求能传递的数据有限,但HTTP其实没有对其做限制,只是浏览器在限制。4.HTTP规定GET...

SevenLee的个人博客 2138

post常见四种提交方式及php接收

application/x-www-form-urlencoded multipart/form-data application/json text/xml 以上是四种常见的POST提交数据的方式,HTTP 协议是以 ASCII 码传输(可参考http介绍),建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样 <m...

Speechless_的博客 1217
上一篇: 从原理角度解析Android (Java) http 文件上传
下一篇: 高项-预习抛题第1周2.11-2.17
韩慧兵
博客等级 码龄15年 170粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值