gdk

导航

http

1. HTTP版本

HTTP/1.0

HTTP/1.1

HTTP-NG

 

2. 会话方式

HTTP/1.0

建立连接->请求->响应->断开连接

每次连接只处理一次请求和相应,对资源的每一次访问都要建立一个单独的连接。

浏览器到服务器的每次通讯都是完全分开的。

没有Host域,所以不可以创建基于主机头的虚拟主机。

 

HTTP/1.1

在一个TCP连接中可以传送多个HTTP请求和响应

不需要等待上次HTTP响应完毕,可以多个HTTP请求同时进行。服务器会根据浏览器发送的请求顺序来按顺序进行响应,这被称作管线。

有Host域,可以建立虚拟主机。

 

3. 请求消息

结构:

请求行

若干消息头(可选)

(CRLF)

实体内容(可选)

 

GET无实体内容

 

4. 响应消息

结构:

状态行

若干消息头(可选)

(CRLF)

实体内容(可选)

 

5. HTTP消息

对于HTTP/1.1,如果消息中包括实体内容,且没有采用Transfer-Encoding: chunked传输编码方式,则必须要有Content-Length消息头。否则浏览器和服务器都不知道何时消息结束。

 

6. 简单请求消息和简单响应消息

没有消息头。

其中,简单请求消息只可用于GET方式,且请求行中不指定HTTP版本号,

对于简单请求消息,服务器将会返回简单响应消息,只返回实体内容。

如:

ROOT /index.html

 

7. HTTP消息头概述

浏览器通过消息头,比如可以告诉服务器浏览器的国家语言版本信息,可以告诉服务器访问者是从哪个页面访问到当前页面的。

 

服务器通过消息头,比如可以告诉浏览器隔多长时间刷新一下,用哪种字符集显示内容,创建Cookie。

 

结构:

头字段名称(不区分大小写):_值,值,值(CRLF)

头字段名称(不区分大小写):_值,值,值(CRLF)

头字段名称(不区分大小写):_值,值,值(CRLF)

 (可以任意顺序排列)

 

分为:通用信息头、请求头、响应头、实体头四类。

 

8. 请求行

结构:

请求方式_资源路径_HTTP版本号(CRLF)

如:

GET /index.htm HTTP/1.1

 

请求方式:

Method

 

GET

请求获取Request-URI所标识的资源

POST

在Request-URI所标识的的资源后附加新的数据

HEAD

请求获取Request-URI所标识的资源的响应消息报头

PUT

请求服务器存储一个资源,并用Request-URI作为资源标识

DELETE

请求服务器删除Request-URI所标识的资源

TRACE

请求服务器回送收到的请求信息,主要用于测试和诊断

CONNECT

保留将来使用

OPTIONS

请求查询服务器的性能,或者查询与资源相关的选项和需求

 

9. 状态行

结构:

HTTP版本号_状态码_状态描述(CRLF)

如:

HTTP/1.1 200 OK

 

10. 使用GET和POST传递参数

GET使用URL传递参数

如:

GET /List.aspx?Catagoryid=5&Cityid=23 HTTP/1.1

 

POST使用实体内容传递参数

如:

POST /List.aspx HTTP/1.1

Content-Type:application/x-www-form-urlencoded

Content-Length:22

 

Catagoryid=5&Cityid=23

 

在POST消息头中要设置Content-Type的值为application/x-www-form-urlencoded,以及使用Content-Length 以标识实体内容的长度。

 

当Content-Length长度比实体内容长度短时,则会忽略多出部分的实体内容。当Content-Length少于实体长度时,则会继续等待。

 

11. 响应状态码

 

状态代码由三位数字组成,第一位定义了响应的类别:

1xx:指示信息——表示请求已接收,继续处理。

2xx:成功——表示请求已被成功接收、理解、接受。

3xx:重定向——要完成请求必须进行更进一步的操作。

4xx:客户端错误——请求有语法错误或请求无法实现。

5xx:服务器端错误——服务器未能实现合法的请求。

 

常见状态码:

Status-Code

Reason-Phrase

 

200

OK

客户端请求成功

206

 

客户端发送了带有Range头的GET请求,服务器正确的返回了该范围的数据

302/307

 

指出被请求的文档已经临时移动到别处,此文档的新的URL在Location响应头中给出

304

 

客户机缓存的版本是最新的,客户机应该继续使用它

400

Bad Request

客户端请求有语法错误,不能被服务器理解

401

Unauthorized

表示客户机访问的是一个受口令和密码保护的页面,并且在WWW-Authenticate响应头提示客户机应重新发出一个带有Authorization头的请求信息。

403

Forbidden

服务器收到请求,但是拒绝提供服务

404

Not Found

请求的资源不存在

500

Internal Server Error

服务器端的CGI、ASP、JSP发生错误

503

Server Unavaliable

服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 

 

posted on 2022-04-26 15:07  郭东康  阅读(648)  评论(0编辑  收藏  举报