HTTP协议入门

一、HTTP协议概念

HTTPHyper Text Transfer Protocol超文本传输协议的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。WEB浏览器与WEB服务器一问一答必须遵循一定的规则,这个规则就是HTTP        协议。

二、HTTP协议的版本

目前使用的有两处版本,分别是HTTP/1.1 HTTP/1.0HTTP/1.1 是有状态的,而HTTP/1.0是无状态的。简单的说使用HTTP/1.0时,每一次向服务器端的请求,必须新建一次连接,请求得到响应完毕,服务器将关闭此连接。那么下次再请求,就必须要再建一次连接,这种情况叫无状态。而使用HTTP/1.1时,每一次向服务器的请求,不必每次都建立连接,若第一次建立连接后,得到响应时服务器不会立即关闭连接,而是等待一段时间(有个会话超时时间),一旦超时时间到了则再关闭连接。而在超时时间之间的请求是不需要再次建立连接的。

注:如请求一个HTML资源,而HTML 中包含如有<img 标签时,会再发一个HTTP请求也就会导致请求一个资源时,会有多个HTTP请求。而有<a 标签则量少会再发请求,需要点击<a 标签后,再会去发HTTP请求。另外HTTP/1.1HTTP/1.0有更多的请求头如hostis_unmodified_since等等。

三、HTTP请求消息详解:

3.1 HTTP请求消息可以分成三个部分:

    1. 请求行:请求行中通常又包括三种方式:HTTP请求方式GETPOST、请求资源名称、HTTP协议版本举例如  GET /boo/java.html HTTP/1.1

    2.  请求头:用于描述客户端请求哪台主机及客户端的一些环境信息,举例如:

         Accept: */*

                   Accept-Encoding:gzi
                   Host:localhost

        Refer:http://localhost/links.asp

    3.  请求正文:在请求头与请求正文之间,必须要有一个空行,请求正文是可选的,当请求方式是POST时才会有请求正文,而当是GET方式时则没有请求正式。请求正式的内容是请求的相关参数,举例:

username=chen&password=123  而当请求是GET时,这些参数将直接在请求行中请求资源后面跟着,如请求行是: GET /book/java.html?username=chen&password=12 HTTP/1.1 即是了。

3.2常用的HTTP请求头

Accept: 浏览器可接受的MIME类型 image/bmpapplication/msword

Accept-Charset:浏览器可支持的字符集

Accept-Encoding:可支持解码的数据编码方式如:gzip , Deflate

Accept-Language:所希望的语言种类如:zh-CN

Host:初始RUL中的主机与端口号如localhost:8080

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。简单的理解就是访问此页面来源的上一个页面URL

Content-tType:内容类型

Is_modified_since:利用此头属性与服务器的文件进行比对,若一致则响应304让浏览器自行从缓存中读取文件。此时间是GMT格林威治时间要早中国8小时。

User-Agent:浏览器类型如:Mozilla/5.0(compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

Content-Length:请求消息正文的长度

Connection:表示是否进行持久连接,若是”keep-alive”则与HTTP/1.1一样是持久连接有状态的连接。

Cookie:比较重要..

Data:请求日期如Mon, 22Aug 2011 01:55:39 GMT请求时间GMT

四、HTTP响应消息详解

4.1 HTTP响应消息可以分成三个部分:

1. 响应行:请求行中通常又包括二种方式:HTTP协议版本、状态码及描述信息。举例如:HTTP/1.1 200 OK

2. 响应头:用于描述服务器基本信息及数据的描述,以告诉客户端如何处理回送来的数据,举例如:

Accept-Ranges:bytes

Content-Length:792

Content-Type:text/html

Date:Sun,16 Sep 2012 02:22:57 GMT

Last-Modified:Sat,15 Sep 2012 14:30:04 GMT

Server:Apache-Coyote/1.1

3. 响应正文:实体内容,代表服务器向客户端回送的数据,如

<!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

         <title

4.2 常用的HTTP响应头:

Location: 指示新的资源位置:http://localhost:8080/myapp/hello.htm

Server:指示服务器的类型如Apache-Coyote/1.1

Content-Encoding:服务器发送数据采用的数据编码类型如:gzip

Content-Length:告诉浏览器正文的长度。如:80

Content-Language:服务器发送的文本语言如:zh-CN

Content-Type:服务器发送内容MIME类型如:text/html;charset=gbk

Content-disposition:比如指示客户下载文件attachment;filename=”a.jpg”

Last-modified:响应回送文件的最后时间如Sat, 15 Sep 2012 14:30:04 GMT

Refresh:指示客户端刷新频率如:Refresh: 1;url=http://www.it315.org

Set-Cookie:服务器发送的CookieSet-Cookie:SS=Q0=5Lb_nQ;path=/search

Expire:指示客户端是否缓存如-1 不缓存,通常与下面两个一起连用

Cache-control:指示客户端是否缓存用于http/1.1 : no-cache

Progma:指示客户端是否缓存用于HTTP/1.0 :no-cache

Connection:指示客户端连接方式有:keep-alivecloseKeep-alive指连接后先暂时不立即关闭连接,而close是连接完得到响应后就立即关闭连接。

Data:响应的时间,也是GMT时间如Sun, 16Sep 2012 02:22:57 GMT

五、HTTP响应状态码

5.1状态码分为5类,大类见下表:

   1. 100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。

   2. 200~299 表示成功接收请求并已完成整个过程的处理。

   3. 300~399 为完成请求客户端需进一步细化请求。如302 请求重定向

   4. 400~499 客户端请求有错误。

   5. 500~599 服务端请求有错误。

5.2 常见的状态码

  200 正常OK  302/307 请求重定向  304 未修改使用缓存读取

 404 未找到资源 500 服务器内部错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值