HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
一.发起HTTP请求
在地址栏输入url再回车,就发起了HTTP请求,然后会看到请求的结果。
url(统一资源定位符)也称网页地址,是互联网标准地址。
协议://服务器ip[:端口]/路径/[?查询]
如,http://www.aaa.com/post/httpxieyi.html 就是一个标准的url。
HTTP详解
HTTP是一种无状态协议,无状态是指web浏览器与web服务器之间不需要建立持久的连接,客户端向服务器端发送请求,然后web服务器返回响(Reponse),就关闭连接,在服务器不保留连接有关的信息,HTTP请求只能由客户端发起,而服务器不能主动的向客户端发送数据。
1.HTTP请求与响应
(1)HTTP请求
HTTP主要包括三个部分,分别是请求行(请求方法),请求头(消息报头)和请求正文。
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
</body>
</html>
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。
2.HTTP请求方法
HTTP请求方法非常多,其中get,post最常见。
(1)GET请求
get方法用于获取请求页面的指定信息(以实体的格式),如果请求资源为动态脚本,返回文本是web容器解析后HTML源代码,而不是源文件
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
(2)POST请求
post方法和get方法相似,区别在于,get方法没有请求内容,而post是有请求内容的。post最多用于向服务器发送大量数据,但是get有大小长度限制,并且get会将发送的数据显示在浏览器上,而post不会,所以安全性相对高一点。
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=Wiley
3.HTTP状态码
当客户端发送请求,服务器端接收后,会向客户端发送信息,其中,HTTP响应的第一行中,最重要的一点就是状态码,
HTTP/1.1 200 OK
此状态码为200,在HTTP协议中表示请求成功。HTTP状态码由三位数字组成第一位定义了相应的类别,且只有五种。
- 1xx:信息提示,表示请求已被成功接收,继续处理。其范围100~101.
*2xx:成功,服务器成功的处理了请求。其范围200~206.
*3xx:重定向,资源已被移动,并告知客户端新的资源地址位置。这时,浏览器将重新对新资源发起请求。其范围300~305。
*4xx:客户端错误状态码,有时客户端发送服务器无法处理的东西,比如格式错误的请求,或者最常见的是,请求一个不存在的url。其范围是400~415。
*5xx:有时客户端发送了有效的请求,但web服务器自身出错了,可能是web服务器运行出错了,或者网站都挂了。5xx用来描述服务器内部错误的,其范围500~505.
常见状态码:
200:客户端请求成功,是最常见的状态。
302:重定向。
404:请求资源不存在,是最常见的状态。
400:客户端请求有语法错误,不能被服务器理解。
401:请求未经授权。
403:服务器收到请求,但拒绝提供服务。
500:服务器内部错误,是最常见的状态。
503:服务器当前不能处理客户的请求,一段时间后可恢复正常。
网友评论