HTTP请求
一个HTTP请求包含三部分内容
- 方法-URI-协议/版本
- 请求头信息
- 请求正文
如下为一个具体事例
POST /examples/default.jsp HTTP/1.1
Accept:text/plain;text/html
Accept-language:en-gb
Connection:Keep-Alive
Host:localhost
User-Agent:(关于浏览器内核信息)
Content-Length:30
Content-Type:application/x-www-form-urlencoded
Accept-Encoding:gzip,deflate
lastname=y&firstname=k
请求的第一行即是:方法-URI-协议/版本号
POST /examples/default.jsp HTTP/1.1
HTTP 1.1 规范定义了7种类型的方法,包括:GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE,其中GET和POST广泛应用于互联网应用。
URI定义了一个互联网资源,通常解析为服务器根目录的相对路径。因此,通常用符号/打头。而URL是URI的一个具体类型。
HTTP请求所包含的请求头信息包含关于客户端环境以及实体内容等非常有用的信息。例如,浏览器所设置的语言实体内容长度等。每个header用回车/换行(即CRLF)分隔。
HTTP请求头信息和请求正文用一行空行分隔,HTTP服务器据此判断请求正文的起始位置。因此在一些关于互联网的书籍中,CRLF作为HTTP请求的第四种组件。在之前的例子中,请求正文如下行:
lastname=y&firstname=k
在正常的HTTP请求中,请求正文的内容不止如此。
HTTP响应
同HTTP请求一样,响应也包含三部分:
- 协议-状态码-描述
- 响应头信息
- 响应正文
如下是一个HTTP响应实例
HTTP/1.1 200 OK
Server:Apache-Coyote/1.1
Date:Thu,8 Jan 2017 13:13:33 GMT
Content-Type:text/html
Last-Modified:Wed,7 Jan 2017 13:13:12 GMT
Content-Length:112
<html>
<head>...</head>
<body>...</body>
</html>
类似于HTTP请求报文,HTTP响应报文第一行说明了HTTP协议的版本是1.1,请求结果是成功的。
HTTP响应报文的正文是HTML文档。HTTP响应报文的头信息和响应正文也是用CRLF分隔的。
状态代码200表示Web服务器能正确响应所请求的资源。其他状态码:访问未授权的资源(401),使用被禁用的请求方法(405)等。