不管是请求消息仍是响应消息都由4个部分组成:首行、首部字段行区、空行、消息主题。html
通常由一个请求行
、0到多个首部字段行
、一个空行
、消息主体
构成服务器
GET /hello.htm HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: example.com Accept-Language: en-us Accept-Encoding: gzip, deflate
包含:请求方法
、资源标识符
、HTTP版本
性能
经常使用请求方法包括:GET、POST、HEAD、PUT、DELETE、CONNECT、OPTIONS、TRACE代理
GET
: 表示我要请求一个指定名称的资源。PUT
: 表示若是指定URL不存在就建立它,不然就修改它。资源数据由消息主体提供。POST
: 表示要建立一个新的子资源,或者更新一个存在的资源。资源数据由消息主体提供。DELETE
: 表示我要删除一个指定名称的资源。OPTIONS
: 容许客户端查看服务器的性能。 HEAD
: 只请求页面的首部。TRACE
: 请求服务器在响应中的实体主体部分返回所获得的内容。 code
PUT和POST区别:
PUT是幂等性
的,而POST不具有幂等性;体如今若是你重复一次提交POST建立子资源的请求,会致使建立两个子资源,而PUT在第二次重复提交时,只是更新子资源而已。htm
能够用来传递客户端的更多信息,以及传递解析消息主题的必要信息。对象
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT) Host: example.com Accept-Language: en-us Accept-Encoding: gzip, deflate
左边称为头字段名
,右边称为头字段值
ip
指示头字段区已完成,消息主体开始(若是有消息主体的话)资源
好比POST提交表单时,表单数据会打包在消息主体内。文档
不管是请求消息仍是响应消息,都有一个可选的消息主体(message-body)。若是客户端在提交表单,那么请求消息主体内就能够放置表单的数据;若是客户端请求下载一个gif,那么响应消息主体内就能够放置gif文件的二进制字节集合。因此,消息主体内能够放置任何内容。它的定义也是如此:
message-body = *OCTET
OCTET
就是字节。而 *OCTET
则标示为多个字节。 仅仅看*OCTET
是没法知道其中究竟是什么内容。这就须要在消息头字段内用一组头字段来标示它。好比Content-Type
就会指示内容的类型。下图列出可做为消息主体限定的首部字段清单。
entity-header = Content-Encoding | Content-Language | Content-Length | Content-Location | Content-MD5 | Content-Range | Content-Type | Allow | Expires | Last-Modified | extension-header extension-header = message-header#response(OK)
Content-Type
实体中所承载对象的类型。Content-Length
所传送实体主体的长度或大小。Content-Language
与所传送对象最相配的人类语言。Content-Encoding
对象数据所作的压缩格式。Content-Location
一个备用位置,请求时可经过它得到对象。Content-Range
说明它是总体的哪一个部分。Content-MD5
实体主体内容的校验和。Last-Modified
所传输内容在服务器上建立或最后修改的日期时间。Expires
实体数据将要失效的日期时间。Allow
该资源所容许的各类请求方法,例如,GET 和 HEAD。ETag
这份文档的惟一验证码。由一个状态行
、一个或者多个首部字段行
、一个空行
、消息主体
构成
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT Content-Length: 88 Content-Type: text/html Connection: Closed <html> <body> <h1>Hello, World!</h1> </body> </html>
由http版本
、状态码
、状态描述文字
构成。
状态码共5组,分别是 100-199,200-299,300-399,400-499,500-599的范围。
200-299
成功。 指明客户端请求是正确的,并被成功执行。300-399
重定向。指明客户端请求是正确的,不过当前请求资源的位置在别处,请再次定向你的资源位置,发起新的请求。400-499
客户端错误。 指明客户端的请求是不正确的,多是格式没法识别,或者URL太长等等。500-599
服务器端错误。 指明客户端的请求正确,可是服务器由于自身缘由没法完成请求。100-199
信息提示。 这个系列的状态码只有2个,可是比较费解,会专门单独的作出解释。详细:
① 客户方错误 100
继续 101
交换协议
② 成功 200
OK 201
已建立 202
接收 203
非认证信息 204
无内容 205
重置内容 206
部份内容
③ 重定向 300
多路选择 301
永久转移 302
暂时转移 303
参见其它 304
未修改(Not Modified) 305
使用代理
④ 客户方错误 400
错误请求(Bad Request) 401
未认证 402
须要付费 403
禁止(Forbidden) 404
未找到(Not Found) 405
方法不容许 406
不接受 407
须要代理认证 408
请求超时 409
冲突 410
失败 411
须要长度 412
条件失败 413
请求实体太大 414
请求URI太长 415
不支持媒体类型
⑤ 服务器错误 500
服务器内部错误 501
未实现(Not Implemented) 502
网关失败 504
网关超时 505
HTTP版本不支持
和请求消息相似,包括服务器自己的一些信息指示、以及响应消息自己的元数据
Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT Content-Length: 88 Content-Type: text/html Connection: Closed
指示头字段完成
案例中就是一个hello.html文件的内容