首页 > 其他分享 >http请求头中的content-type

http请求头中的content-type

时间:2023-11-16 16:13:10浏览次数:38  
标签:请求 form 报文 content application 头中 type

web开发过程中客户端与服务端一般通过HTTP协议交互信息,而请求头和响应头用来承载这些交互信息。

请求头和响应头比较正式的叫法分别是请求报文和响应报文,统称为HTTP报文。下面是HTTP报文的结构:

HTTP报文的结构

HTTP报文分为报文首部和报文主体,两者之间用空行分隔(空行由回车符和换行符生成)。

content-type在报文首部,用来表明报文主体的媒体类型(media type)。

在日常开发工作中,用的比较多的是GET和POST请求。

GET请求是把参数信息直接拼接在请求链接后边,没有报文主体,所以也就不需要设置content-type

而POST请求会把参数信息放在报文主体中,所以需要设置content-type,告诉服务端主体信息的格式,以便服务端解码得到参数信息。

下面主要记录下POST请求常用的几个content-type值:

  • application/x-www-form-urlencoded
  • multipart/form-data
  • application/json

application/x-www-form-urlencoded

默认情况下,以post的方式提交表单数据时,content-type自动设置为application/x-www-form-urlencoded,数据被编码成以 '&' 分隔的键值对,同时以 '=' 分隔键和值。键和值中非字母或数字的字符会被URL编码。

下面是例子:

<form method="post" action="/test/index.php">
    <div>
        name:<input type="text" name="username" />
    </div>
    
    <div>
        password:<input type="password" name="password" />
    </div>
    <button type="submit">Submit</button>
</form>

下面是请求报文的截图:

HTTP POST 请求报文

HTTP POST 请求报文

请求报文中content-type被自动添加了,值是application/x-www-form-urlencoded,请求参数处理成了'key=val&key=val'的形式。

如果不使用form元素,使用XMLHttpRequest提交数据的话,要明确设置请求报文的content-type,否则服务端可能无法获取到客户端传递的参数。

multipart/form-data

multipart/form-data诞生的初衷是为了更方便的让用户上传文件。客户端会按照特殊的格式处理请求主体,服务端获取到请求主体后也会按照该格式的规则解析出数据。看一个例子:

<form method="post" action="/test/index.php" enctype="multipart/form-data">
    <div>
        name:<input type="text" name="username" />
    </div>
    
    <div>
        password:<input type="password" name="password" />
    </div>
    <button type="submit">Submit</button>
</form>

form元素添加了enctype属性,告诉服务端这次传递数据采用multipart/form-data格式。

看一下请求报文:

HTTP POST 请求报文

请求主体被处理成了如下格式:

HTTP POST 请求报文

上传文件会再单独总结一篇笔记。

application/json

现在前后端通过AJAX交互,采用比较多的是application/json

下面看一个例子(根据经纬度获取实际地址):

HTTP POST 请求报文

请求主体是如下格式:

HTTP POST 请求报文

其他相关文章

  1. 网络请求类型Content-Type的认识
  2. HTTP请求头的Content-Type字段
  3. POST的Content-Type引发的HTTP相关知识思考
  4. Form content types

标签:请求,form,报文,content,application,头中,type
From: https://www.cnblogs.com/fogwind/p/17836525.html

相关文章

  • python3 json.dumps(OrderDict类型) 报错:TypeError: Object of type datetime is not
    chatgpt给出的解决方案,在json.dumps()函数调用中传入default参数来指定如何处理datetime对象importjsonfromdatetimeimportdatetimedefdatetime_handler(obj):ifisinstance(obj,datetime):returnobj.__str__()#另一种处理,转换为自定义格式化字符串......
  • typeof 主要用于检测基本数据类型,对于引用类型不大适用(因为所有引用类型的值都是 Obje
    下面哪些语句可以在JS里判断一个对象是否为String类型?AoStringObjectinstanceofStringBtypeofoStringObject=='string'CoStringObjectisStringD以上答案都不正确正确答案:AJS中值的类型分为原始值类型和对象类型。原始值类型包括number,string,boolean,nul......
  • blob:http Status Code: 206 Partial Content 视频去水印
       从视频中删除水印-免费擦除徽标和日期https://online-video-cutter.com/cn/remove-logo#google_vignetteStatusCode:206PartialContentblob:https://online-video-cutter.com/461afc6a-9e64-45ca-9276-4f9489bde7f7  视频去水印先上传再选区域  ......
  • 首先Function的显示原型prototype和隐式原型__proto__都是同一个 也就是说 构造函数和
    下列说法正确的是()A每个JS对象一定对应一个原型对象,并从原型对象继承属性和方法B对象的__proto__指向自己构造函数的prototypeCObject.prototype.proto===null,说明原型链到Object.prototype终止D表达式Function.prototype.proto.proto===null的运行结果为true正确......
  • KET.Application 报错:pywintypes.com_error: (-2147221005, '无效的类字符串', None,
    电脑突然有一天调用KET.Application总是报错,代码:importwin32com.clientxcl=win32com.client.DispatchEx("KET.Application")xcl.Quit()报错:pywintypes.com_error:(-2147221005,'无效的类字符串',None,None)WIN11系统,最新版WPSAI,之前用的好好的,不知道最近卸载了......
  • input type=tel 控制输入数字点击数字键盘的回车确认无反应,无法关闭数字键盘
    input事件总结:1、onfocus当input获取到焦点时触发2、onblur当input失去焦点时触发,注意:这个事件触发的前提是已经获取了焦点再失去焦点的时候才会触发该事件,用于判断标签为空3、onchange当input失去焦点并且它的value值发生变化时触发4、onkeydown按下按键时的事件触发5......
  • vscode上面运行typescript
    参考:如何在vscode上直接运行typescript1.下载nodejs,安装nodejs,安装成功后,打开cmd,输入node-v,运行,可以看到nodejs的版本号2.安装typescript,控制台上运行npminstalltypescriptts-node@types/node@*-g(如果下载速度慢,可以使用国内淘宝镜像,先执行npmins......
  • const 声明一个常量无法更改,所以TypeError; 如果const出来的是一个对象他的属性是可以
    在es6中,下面程序运行结果输出,选项结果正确的是for(leti=0;i<12;i++){}console.log(i);consta=12;a=13;console.log(a);constg={b:3};console.log(g.b);g.b=12;console.log(g.b);let[head,...tail]=[1,2,3,4];conole.log(tail);A11,13,3,12,[3,4]Binotd......
  • TypeScript的5个常见用法
    TypeScript是一种静态类型的JavaScript超集,它提供了额外的类型系统和一些ECMAScript新特性的支持。以下是TypeScript的一些常见用法:1:类型注解:TypeScript允许在变量、函数、参数、返回值等地方添加类型注解,明确指定变量的类型。例如:letname:string='John';functiongr......
  • 在 TypeScript 中,extends
    extends是一个关键字,用于指定类型参数的约束。它在类型参数的声明中使用,以确保类型参数满足特定的条件。具体来说,extends后面可以跟随一个类型,表示类型参数必须是该类型的子类型。在泛型类型或泛型函数中,这样的约束可以提供更强的类型安全性,使得类型参数符合特定的要求。以下......