contenttype(contentType和post,get)

http://www.itjxue.com  2023-01-26 02:51  来源:未知  点击次数: 

http请求中的content-type

Content-Type属性指定请求和响应的 HTTP 内容类型。如果未指定 ContentType,默认响应的内容类型为 text/html ,默认请求的内容类型为 application/x-www-form-urlencoded 。Content-Type一般只存在于Post方法中,因为Get方法是不含“body”的,它的请求参数都会被编码到url后面,所以在Get方法中加Content-type是无用的。

在 nginx 中有个配置文件 mime.types ,主要是标示 Content-Type 的文件格式。

下面是几个 常见的 Content-Type :

application/x-www-form-urlencoded 是常用的表单发包方式,普通的表单提交,或者 js 发包,默认都是通过这种方式,数据被编码为key/value格式发送到服务器

multipart/form-data 用在 发送文件的POST包 。

Multipart/form-data的请求头必须包含一个特殊的头信息 : Content-Type , 且其值也必须规定为multipart/form-data , 同时还需要规定一个 内容分割符 即 boundary 用于分割请求体中的多个POST的内容 , 如文件内容和文本内容自然需要分割开来 , 不然接收方就无法正常解析和还原这个文件了。

text/xml 微信用的是这种数据格式发送请求的。XML-RPC(XML Remote Procedure Call)是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。

application\json HTTP通信中并不存在所谓的json,而是将string转成json罢了,也就是,application/json可以将它理解为text/plain,普通字符串。

application\xml XML数据格式

MDN Content-Type

理解HTTP之Content-Type

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

什么是content-type类型

Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。

这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。

Content-Type是Http的实体首部字段,用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在。

常用类型:

一、application/x-www-form-urlencoded

1、浏览器的原生form表单。

2、提交的数据按照 key1=val1key2=val2 的方式进行编码,key和val都进行了URL转码。

二、multipart/form-data

常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。

首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。

消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。

三、application/json

消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用。

四、text/xml

是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。

Content-Type 详解

Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。

在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等等。

Content-Type:type/subtype ;parameter

例如:

Content-Type: text/html;

Content-Type: application/json;charset:utf-8;

常见的Content-Type有数百个,下面例举了一些

上面的Content-Type,我们只认得就好,但是下面有4种是需要我们清楚他们的区别及牢记在心的。

HTTP会将请求参数用key1=val1key2=val2的方式进行组织,并放到请求实体里面,注意如果是中文或特殊字符如"/"、","、“:" 等会自动进行URL转码。不支持文件,一般用于表单提交。

下面是一个例子:

与application/x-www-form-urlencoded不同,这是一个多部分多媒体类型。首先生成了一个 boundary 用于分割不同的字段,在请求实体里每个参数以------boundary开始,然后是附加信息和参数名,然后是空行,最后是参数内容。多个参数将会有多个boundary块。如果参数是文件会有特别的文件域。最后以------boundary–为结束标识。multipart/form-data支持文件上传的格式,一般需要上传文件的表单则用该类型。

下面是一个例子:

JSON 是一种轻量级的数据格式,以“键-值”对的方式组织的数据。这个使用这个类型,需要参数本身就是json格式的数据,参数会被直接放到请求实体里,不进行任何处理。服务端/客户端会按json格式解析数据(约定好的情况下)。

与application/json类似,这里用的是xml格式的数据,text/xml的话,将忽略xml数据里的编码格式, 参考 。

一般我们在开发的过程中需要注意客户端发送请求(Request)时的Content-Type设置,特别是使用ajax的时候,如果设置得不准确,很有可能导致请求失败。比如在spring中,如果接口使用了@RequestBody,spring强大的自动解析功能,会将请求实体的内容自动转换为Bean,但前提是请求的Content-Type必须设置为application/json,否正就会返回415错误。

注:415 错误是 Unsupported media type,即不支持的媒体类型。

建议:

服务端响应(Response)的Content-Type最好也保持准确,虽然一般web开发中,前端解析响应的数据不会根据Content-Type,并且服务端一般能自动设置准确的Content-Type,但是如果乱设置某些情况下可能会有问题,比如导出文件,打开图片等。如果在spring项目里使用@ResponseBody,spring会将响应的Content-Type设置为application/json;charset=UTF-8;,可能会导致文件无法导出,需要注意下。

response的Content-Type设置建议:

下面的一个设置response的Content-Type的例子:

参考

《HTTP 权威指南》

什么是json

常见的Content-Type

application/xml 和 text/xml的区别

postman里的Content-Type

POST请求的几种content type类型

content-type是http请求的响应头和请求头的字段。当作为响应头时,告诉客户端实际返回的内容的内容类型。作为请求头时(post或者put),客户端告诉服务器实际发送的数据类型。

在前端开发过程中,通常需要跟后端工程师对接接口的数据格式,不同的数据类型对于服务器来说有不同的处理方式,因此我们需要关注不同的conten-type类型.

1. application/x-www-form-urlencoded

浏览器原生form表单默认的提交方式(在不设置enctype的情况下)。此时请求头的格式如下:

content-type: application/x-www-form-urlencoded;charset=utf-8

form-data: key1=val1key2=val2

此时后端例如php可以通过$_POST["key1"]的方法来获取参数值。

此种情况下:非字母或数字的字符会被进行编码(编码方式 ),这也是为什么这种方式不支持二进制数据的原因。

2. multipart/form-data

与application/x-www-form-urlencoded 的区别是她支持文件的传输,并且它的传输数据放在request-payload里,并且以bounday进行分隔。

POST /test.html HTTP/1.1

Host: example.org

Content-Type: multipart/form-data;boundary="boundary"

--boundary

Content-Disposition: form-data; name="field1"

value1

--boundary

Content-Disposition: form-data; name="field2"; filename="example.txt"

value2

3. application/json

格式是这样的:

POST HTTP/1.1

Content-Type: application/json;charset=utf-8

{"title":"test","sub":[1,2,3]}

它用来告诉服务端消息主体是 序列化后的 JSON 字符串 ,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。此时php不能直接通过$_POST获取,需要先从php://input里获得原始输入流,再json_decode成对象

4.text/plain

传统的ajax请求提交

function submit2() {

? ? var xhr = new XMLHttpRequest();

? ? xhr.timeout = 3000;

? ? var obj = {a: 1, b: 2};

? ? xhr.open('POST', '/');

? ? xhr.send(obj);

}

另外,对于axios请求,不同的请求方式content-type也不同

function submit3() {

? ? var sence1 = 'name=123val=456';

? ? var sence2 = {name: 123, val: 456};

? ? axios.post('/', sence1)

}

1. 当传递的是字符串的时候

? ??

2. 当传递的是对象的时候

? ??

总结

1.传统的ajax请求时候,Content-Type默认为"文本"类型。

2.传统的form提交的时候,Content-Type默认为"Form"类型。

3.axios传递字符串的时候,Content-Type默认为"Form"类型。

4.axios传递对象的时候,Content-Type默认为"JSON"类型

content type是什么意思

content type 英[?k?ntent taip] 美[?kɑn?t?nt ta?p]

[词典] [计] 内容类别;

[例句]These are the selected mime and file types included in this content type set.

这些是在此内容类型组中选择的mime和文件类型。

html中的content-type是什么意思?

content-type是内容类型,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。

用法示例:meta?content="text/html; charset=gb2312" http-equiv="Content-Type"/

描述内容类型的字符串。该字符串通常被格式化为类型/子类型,其中类型是常规内容范畴而子类为特定内容类型。

扩展资料

content-type文件内容对照:

".*"="application/octet-stream"

".001"="application/x-001"

".301"="application/x-301"

".323"="text/h323"

".906"="application/x-906"

".907"="drawing/907"

".a11"="application/x-a11"

".acp"="audio/x-mei-aac"

".ai"="application/postscript"

".aif"="audio/aiff"

".aifc"="audio/aiff"

".aiff"="audio/aiff"

".anv"="application/x-anv"

".asa"="text/asa"

".asf"="video/x-ms-asf"

".asp"="text/asp"

".asx"="video/x-ms-asf"

".au"="audio/basic"

".avi"="video/avi"

".awf"="application/vnd.adobe.workflow"

".biz"="text/xml"

".bmp"="application/x-bmp"

".bot"="application/x-bot"

".c4t"="application/x-c4t"

".c90"="application/x-c90"

".cal"="application/x-cals"

".cat"="application/s-pki.seccat"

".cdf"="application/x-netcdf"

".cdr"="application/x-cdr"

".cel"="application/x-cel"

".cer"="application/x-x509-ca-cert"

".cg4"="application/x-g4"

".cgm"="application/x-cgm"

参考资料来源:百度百科-ContentType

(责任编辑:IT教学网)

更多

相关Flash实例教程文章

推荐Flash实例教程文章