form-data与x-www-form-urlcoded区别
引言
很多同学在使用 postman 工具时,经常搞不清楚 form-data 与 x-www-form-urlcoded 的区别,如下:

multipart/form-data 和 application/x-www-form-urlencoded 是两种常用的 HTTP 请求内容类型(Content-Type),它们用于在 HTTP请求中发送数据,但是它们之间存在一些区别。
区别
数据格式
application/x-www-form-urlencoded:这是一种非常简单的编码方式,用于将表单数据以键值对的形式发送。数据被编码为URL编码的文本,即每个键和值被转换为key=value的形式,并且这些键值对通过&字符连接起来。这种方式适用于发送ASCII字符数据。
multipart/form-data:这种格式用于传输文件和二进制数据。它将数据分割成多个部分,每个部分可以包含不同类型的数据(如文本、文件等)。每部分都有自己的内容类型和内容描述。这种格式通常用于文件上传。
用途
application/x-www-form-urlencoded:主要用于发送简单的表单数据,如登录表单或搜索查询。
multipart/form-data:主要用于文件上传和更复杂的表单数据传输,因为它可以包含文件和其他二进制数据。
编码方式
application/x-www-form-urlencoded:数据在发送前会被编码,以确保数据在传输过程中不会损坏。例如,空格被编码为+,特殊字符被编码为%HH(HH是字符的十六进制值)。
multipart/form-data:数据以二进制形式传输,因此不需要进行URL编码。
边界(Boundary)
multipart/form-data:在请求体中,每个部分之间有一个边界分隔符(boundary),这是一个唯一的字符串,用于区分不同的部分。这个边界不会在任何部分的数据中出现。
application/x-www-form-urlencoded:不需要边界分隔符,因为数据是连续的。
HTTP方法
两种内容类型都可以用于POST请求,但application/x-www-form-urlencoded也可以用于GET请求,尽管这不是最佳实践,因为它可能会在URL中暴露敏感数据。
浏览器支持
几乎所有的浏览器都支持这两种内容类型,但是multipart/form-data在处理文件上传时更为常见。
服务器端处理
服务器端的解析和处理通常对multipart/form-data更为复杂,因为服务器需要解析多个部分并处理不同的内容类型。
总结
在实际应用中,选择哪种内容类型取决于你需要传输的数据类型和应用场景。如果你需要上传文件或者发送包含文件的复杂表单,你应该使用multipart/form-data。如果你只是发送简单的文本数据,application/x-www-form-urlencoded通常是更好的选择。
form-data与x-www-form-urlcoded区别的更多相关文章
- Sending forms through JavaScript[form提交 form data]
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript As in the ...
- HTTP请求中的Form Data与Request Payload的区别
前端开发中经常会用到AJAX发送异步请求,对于POST类型的请求会附带请求数据.而常用的两种传参方式为:Form Data 和 Request Payload. GET请求 使用get请求时,参数会以 ...
- 【转】HTTP请求中的form data和request payload的区别
jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的,比如用$.ajax方法发送请求时(data参数是一个JSON.stringify()处理后的字符串, ...
- [转]HTTP请求中的form data和request payload的区别
本文转自:http://www.cnblogs.com/btgyoyo/p/6141480.html jQuery的ajax方法和post方法分别发送请求,在后台Servlet进行处理时结果是不一样的 ...
- Form Data 和 Request Payload 区别
Form Data 和 Request Payload 区别 如果请求头里设置Content-Type: application/x-www-form-urlencoded,那么这个请求被认为是表单请 ...
- (转载)http协议的Request Payload 和 Form Data 的区别
我正在开发的项目前端和后端是完全独立的,通过配置 webpack 的 proxy 将前端请求跨域代理到后台服务.昨天发现,我前端执行 post 请求,后台 springmvc 的 @RequestMa ...
- HTTP 请求中的 Form Data 与 Request Payload 的区别
HTTP 请求中的 Form Data 与 Request Payload 的区别 前端开发中经常会用到 AJAX 发送异步请求,对于 POST 类型的请求会附带请求数据.而常用的两种传参方式为:Fo ...
- axios 请求中的Form Data 与 Request Payload的区别
在vue项目中使用axios发post请求时候,后台返回500. 发现是form Data 和 Request payload的问题. 后台对两者的处理方式不同,导致我们接收不到数据. 解决方案:使用 ...
- form data和request payload的区别
HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...
- HTTP请求中的form data和request payload的区别
HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: <form action="form_action.asp&qu ...
随机推荐
- ChatMoney化身恋爱大师来帮助你收获完美爱情!
本文由 ChatMoney团队出品 介绍说明 在纷繁复杂的情感世界里,寻找真爱的道路常常充满迷茫和困惑.但现在,有了 AI 智能体恋爱大师,为您的爱情之旅点亮明灯. AI 智能体恋爱大师并非传统意义上 ...
- C#实现欧姆龙 HostLink 通讯协议库
目录 C#实现欧姆龙 HostLink 通讯协议库 背景介绍 欧姆龙 PLC 内存区域介绍 欧姆龙 PLC 数据类型对应 欧姆龙 PLC 与 PC 的 RS232 接线线序 HostLink通讯报文分 ...
- hot100之回溯下
单词搜索(079) class Solution { int m, n; public boolean exist(char[][] board, String word) { m = board.l ...
- java基础之变量,常量,作用域
/*注意点:在实际开发的过程中要注意变量命名规范*/ 变量 public class Demo8 { //属性:变量 static String zx="钟县"; ...
- C#/.NET/.NET Core技术前沿周刊 | 第 45 期(2025年7.1-7.6)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- react发布一个组件库 系列篇(二)
前言 在上篇说到,不是特殊情况,我们尽量还是把源码打包编译成es5之后再发布到npm,这样用户使用的时候就很方便. 接下来我们就还拿上章的代码,使用rollup+babel编译.打包后再发版,来举个例 ...
- java实现聊天,服务端与客户端代码(UDP)-狂神改
首先是文件结构: 最后run的是下面两个 代码用的狂神的,不过他写的有点小bug,比如传信息会出现一堆空格(recieve data那里长度不应该用data.lenth()而应该用packet.get ...
- C++ STL 源码 阅读
简介 STL 最常用的源码 下载链接 https://github.com/steveLauwh/SGI-STL
- 解锁ETLCloud中Kettle的用法
随着大数据时代的到来,数据的处理和管理成为各行各业不可或缺的一环.ETL(Extract-Transform-Load)工具作为数据处理的重要环节,扮演着将数据从源端抽取出来.经过转换处理,最终加载至 ...
- freeswitch笔记(8)-esl outbound 填坑笔记
github上的esl-client已经N年未更新了,上面有一堆bug,记录一下: 一.内存泄露 org.freeswitch.esl.client.transport.message.EslFram ...