文章目录
- 1. 场景类型
- 2 Content-Type作用
1. 场景类型
在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值
MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息,确切的来说是客户端告知服务端,自己即将发送的请求消息携带的数据结构类型,好让服务端接收后以合适的方式处理。
例如: Content-Type: text/html;charset:utf-8;
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
2 Content-Type作用
不过需要注意的是,一般get请求不需要设置Content-Type,只有post才有必要设置!
为什么get请求不需要设置Content-Type?
那要从Content-Type的作用说起,Content-Type作用是为了告诉别人我携带的数据是什么格式?
- 对于request请求
get是不携带数据的,url中?后的参数不算做data
post是需要带参数的,也就是data参数,客户端告诉服务端,自己的数据类型 - 对于response响应
反过来了,服务端告诉客户端,自己的数据类型,这样浏览器就知道是按text/html页面渲染,还是按照text/plain渲染
我们举个例子来说明下,携带 Content-Type的必要性。
我们借鉴《Node.js Web 模块(加载静态页面的web功能)》中的例子,通过浏览器加载一个静态页面:
原文在返回时,在responseHeaders中设置Content-Type,其值为’text/html
’:
response.writeHead(200, {'Content-Type': 'text/html'});
访问效果是:
浏览器把文本当做html来渲染,那么会隐藏html标签,并按照css样式等渲染!
我们把返回格式该一下,改为text/plain
文本格式:
response.writeHead(200, {'Content-Type': 'text/plain'});
访问效果是:
注意红色标记的内容,本身是html标签,被当做普通文本显示出来了!因为服务端告诉浏览器数据是文本格式的,不是html格式的,因此浏览器就把标签当做普通文本对待了。
因此Content-Typ作用是告知别人我的数据是什么格式的,可以是客户端告知服务端,可以是服务端告知客户端。
在回到之前的问题,为什么get请求不需要设置Content-Type?
原因就是get时,不会携带狭义的数据,即data,那么自然就没必要告诉服务器自己的数据类型是什么了!当然了,如果强行给get请求设置Content-Type也不会出错,但是没有意义
更多推荐
【web】 Http请求中请求头Content-Type讲解
发布评论