源自:www.runoob.com/http/http-c…
HTTP描述
- 超文本传输协议(Hyper Text Transfer Protocol)
- 用于从万维网服务器传输超文本到本地浏览器的传输协议
- HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务器的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。
- http是基于请求与响应模式的、无状态的、应用层的协议。
HTTP请求报文
- 请求行request-line:(请求方法、统一资源标识符、HTTP协议版本)
- 请求头headers
- 空一行
- 请求体request-body:(get没有请求体,post请求体中放需要提交的数据,但post并没有固定数据编码格式所以就需要设置Content-Type)
- Authorization:客户端提供给服务器,进行权限认证的信息
请求行
请求方法GET、POST、PUT、DELETE、PUT等
URL:格式schema://hosr[:port]/path/.../[?query-string]
schema:协议,如http,https,ftphost:域名或者ip地址port:端口path:资源路径query-string:发送的参数
请求头(只列用到的)
- 经常使用的Content-Type是请求体内容类型,如Content-Type:application/json等
- Host:主机ip或域名
- Accept:指定客户端接收信息类型,如image/jpg、text/html、application/json等
- Cookie:携带的cookie信息
Content-Type
常见的媒体格式:
- text/html : HTML格式,意思是将文件的content-type设置为text/html的形式,浏览器在获取到这种文件时会自动调用html的解析器对文件进行相应的处理。
- text/plain :纯文本格式,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数据格式,用来告诉服务端消息主体是序列化后的JSON字符串
- application/pdf:pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式),提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。 另外一种常见的媒体格式是上传文件之时使用的:
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式,我们使用表单上传文件时,必须让form的enctyped等于这个值。
text/json与application/json区别
text/x-json:json的官方MIME类型
text/x-json:在application / json正式注册之前,json的实验性(非官方)MIME类型
text/javascript与application/json
前者用于返回js代码,后者专门用于返回json格式的数据。
但是json格式的范围比js代码的范围要小很多。json是js的一个子集
所以如果返回的是 json 格式,那么用两者都是可以的。
服务端 向 客户端 发送 JSON数据 时:
Content-Type = 'application/json;charset=UTF-8'
服务端 向 客户端 发送 JS 代码 时:
Content-Type = 'text/javascript;charset=UTF-8'
服务端 判断 客户端 提交的是否是 JSON数据 时 :
Content-Type = 'application/json;charset=UTF-8'
Content-Type = 'text/json;charset=UTF-8'
Content-Type = 'text/javascript;charset=UTF-8'
Content-Type = 'application/javascript;charset=UTF-8'
只要 Content-Type 满足上面4个条件中的 任意一个时,就可以认为提交的数据是 JSON数据
HTTP响应报文
- 响应行(协议版本、状态码、状态描述)
- 响应头(重要的Content-Type、Set-Cookie)
- 空行
- 响应体(正文)