一个http请求由:
1.请求头(request-line)
2.消息头部(header)
3.空行
4.请求正文
四部分构成:
下面我们看一下实际的提交例子:
首先是请求行,由请求方法、请求URL、HTTP协议及版本构成,例如:GET /index.html HTTP/1.1,请求方法有:GET、POST、DELETE、PUT、CONNECT、HEAD、OPTIONS、TRACE最常用还是GET与POST方法
GET方法当client要从server中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送
给client。
请求参数和对应的值附加在URL后面,利用一个问号("?")代表URL的结尾与请求参数的开始,传递参数长度受限制,例如:
/index.jsp?id=100&op=bind
POST:当client给服务器提供信息较多时, 使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以key/value的形式出现,可以传递大量数据,可用来传递文件
消息头部
请求头部由key/value键值对组成,每行一对,key和value用冒号":"分隔,请求头部通知服务器有关于client端的请求信息,典型的请求头:
- User-Agent:产生请求的浏览器类型
- Accept:client端可识别的内容类型列表
- Host:请求的主机名,允许多个域名同处一个ip地址,即虚拟主机
空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器请求头结束。
对于一个完整的http请求来说空行是必须的,否则服务器会认为本次请求的数据尚未完全发送到server,处于等待状态
请求正文
请求数据不在GET方法中使用,而是在POST中使用。POST方法适用于需要client填写表单的场合,与请求数据相关的最常用的请求头是Content-Type 和Content-Length
常见的HTTP请求报文头属性
Accept
请求报文可通过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。例如:
text/xml(application/json)代表客户端希望接受的数据类型是xml(json )类型
Content-Type
发送端(客户端|服务器)发送的实体数据的数据类型。例如:
text/html(application/json)代表发送端发送的数据格式是html(json)。
二者合起来,Accept:text/xml;Content-Type:text/html即代表希望接受的数据类型是xml格式,本次请求发送的数据的数据格式是html。
Cookie
客户端的Cookie就是通过这个报文头属性传给服务端
Referer
表示这个请求是从哪个URL过来的
Cache-Control
对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。\
MediaType
即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
常见的MediaType:
-
text/html:HTML格式
-
text/plain:纯文本格式
-
text/xml: XML格式
-
image/gif:gif图片格式
-
image/jpeg:jpg图片格式
-
image/png:png图片格式
-
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:
中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式) -
multipart/form-data: 需要在表单中进行文件上传时,就需要使用该格式