<request-line>
<headers>
<blank line>
<request-body>
1.要求头
要求行由要求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。
HTTP协议的要求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
而常见的有如下几种:
1).GET
最常见的一种要求办法,当客户端要从做事器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,利用的都是GET办法。GET方法哀求做事器将URL定位的资源放在相应报文的数据部分,回送给客户端。利用GET方法时,要求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与要求参数的开始,通报参数长度受限定。例如,/index.jsp?id=100&op=bind,这样通过GET办法通报的数据直接表示在地址中,以是我们可以把要求结果以链接的形式发送给好友。以用google搜索domety为例,Request格式如下:
可以看到,GET办法的要求一样平常不包含”要求内容”部分,要求数据以地址的形式表现在要求行。地址链接如下:
地址中”?”之后的部分便是通过GET发送的要求数据,我们可以在地址栏中清楚的看到,各个数据之间用”&”符号隔开。显然,这种办法不适宜传送私密数据。其余,由于不同的浏览器对地址的字符限定也有所不同,一样平常最多只能识别1024个字符,以是如果须要传送大量数据的时候,也不适宜利用GET办法。
2).POST
对付上面提到的不适宜利用GET办法的情形,可以考虑利用POST办法,由于利用POST方法可以许可客户端给做事器供应信息较多。POST方法将要求参数封装在HTTP要求数据中,以名称/值的形式涌现,可以传输大量数据,这样POST办法对传送的数据大小没有限定,而且也不会显示在URL中。还以上面的搜索domety为例,如果利用POST办法的话,格式如下:
可以看到,POST办法要求行中不包含数据字符串,这些数据保存在”要求内容”部分,各数据之间也是利用”&”符号隔开。POST办法大多用于页面的表单中。由于POST也能完成GET的功能,因此多数人在设计表单的时候一律都利用POST办法,实在这是一个误区。GET办法也有自己的特点和上风,我们该当根据不同的情形来选择是利用GET还是利用POST。
3).HEAD
HEAD就像GET,只不过做事端接管到HEAD要求后只返回相应头,而不会发送相应内容。当我们只须要查看某个页面的状态的时候,利用HEAD是非常高效的,由于在传输的过程中省去了页面内容。
2.要求头部
要求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。要求头部关照做事器有关于客户端要求的信息,范例的要求头有:
User-Agent:产生要求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:要求的主机名,许可多个域名同处一个IP地址,即虚拟主机。
3.空行
末了一个要求头之后是一个空行,发送回车符和换行符,关照做事器以下不再有要求头。
4.要求数据
要求数据不在GET方法中利用,而是在POST方法中利用。POST方法适用于须要客户填写表单的场合。与要求数据干系的最常利用的要求头是Content-Type和Content-Length。
HTTP报文HTTP相应也由三个部分组成,分别是:状态行、报头、相应正文。
如下所示,HTTP相应的格式与要求的格式十分类似:
<status-line>
<headers>
<blank line>
[<response-body>]
正如你所见,在相应中唯一真正的差异在于第一行中用状态信息代替了要求信息。状态行(status line)通过供应一个状态码来解释所要求的资源情形。
状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
个中,HTTP-Version表示做事器HTTP协议的版本;Status-Code表示做事器发回的相应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了相应的种别,且有五种可能取值。
1xx:指示信息--表示要求已吸收,连续处理。2xx:成功--表示要求已被成功吸收、理解、接管。3xx:重定向--要完成要求必须进行更进一步的操作。4xx:客户端缺点--要求有语法缺点或要求无法实现。5xx:做事器端缺点--做事器未能实现合法的要求。常见状态代码、状态描述的解释如下。
200 OK:客户端要求成功。400 Bad Request:客户端要求有语法缺点,不能被做事器所理解。401 Unauthorized:要求未经授权,这个状态代码必须和WWW-Authenticate报头域一起利用。403 Forbidden:做事器收到要求,但是谢绝供应做事。404 Not Found:要求资源不存在,举个例子:输入了缺点的URL。500 Internal Server Error:做事器发生不可预期的缺点。503 Server Unavailable:做事器当前不能处理客户真个要求,一段韶光后可能规复正常,举个例子:HTTP/1.1 200 OK(CRLF)。