HTTP协议

一、HTTP简介

  • WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
  • HTTP是HyperTextTransferProtocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。
  • HTTP协议的版本:HTTP/1.0、HTTP/1.1
  • HTTP协议是学习Javaweb开发的基础,不深入了解HTTP协议,就不能说掌握了web开发,更无法管理和维护一些复杂的web站点。

二、HTTP1.0的基本运行方式

  • 基于HTTP协议的客户/服务器模式的信息交换过程,如图所示,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。
  • 浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与web服务器都要建立一次单独的连接。
  • 浏览器到web服务器之间的所有通讯都是完全独立分开的请求和响应。

三、浏览器访问多图网页

  • 在一个HTML页面中如果包含<img>标记的话,当浏览器解析到这些这些标记时,还会向服务器请求访问标记中指定的文件,即再次建立连接并发出HTTP请求。
  • 如果HTML页面中有一个超级链接:<a href="http://www.csdn.net">csdn</a>,当点击这个链接时,也会触发浏览器与web服务器开始一次新的HTTP通信。

四、HTTP1.1的特点

  • 在一个TCP连接上可以传送多个HTTP请求和响应
  • 多个请求和响应过程可以重叠
  • 增加了更多的请求头和响应头,比如Host、If-Unm   odified-Since请求头等

五、HTTP请求消息

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。

一个完整的HTTP请求包括如下内容:一个请求头、若干消息头、以及请求正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

六、HTTP响应消息

一个HTTP响应代表服务器向客户端回送的数据。

一个完整的HTTP响应包括如下内容:一个状态行、若干消息头、以及响应正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开。

七、HTTP消息头(请求和响应共性)

  • 使用消息头,可以实现HTTP客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些暗号指令。
  • 每个消息头包含一个头字段名称,然后一次是冒号、空格、值、回车和换行符。如:Accept-Encoding:gzip,deflate
  • 消息头字段名是不区分大小写的,但习惯上讲每个单词的第一个字母大写。
  • 整个消息头部分中的各行消息头可按任何顺序排列。
  • 消息头又可分为通用消息头、请求头、响应头、实体头等四类。
  • 许多请求头字段都允许客户端在值部分指定多个可接受的选项,多个选项之间以逗号分隔。
  • 有些头字段可以出现多次,例如,响应消息中可以包含有多个"Warning"头字段。

八、HTTP请求的细节——请求行

1. 请求行

  • 格式:请求方式 资源路径 HTTP版本号<CRLF>
  • 举例:GET /temp3o116.shtml HTTP/1.1
  • 请求方式:GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT
  • 用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。
  • 不管POST或GET,都用于向服务器请求某个web资源,这两种方式的区别主要表现在数据传递上。

2. GET方式

  • 如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交个服务器的数据,多个数据之间以&进行分隔,例如:
  • GET /mail/1.html?name=abc&password=xyz HTTP/1.1
  • GET 方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1k。

3. POST方式

  • 如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,post方式的特点:传送的数据量无限制。

九、HTTP响应的细节——状态行

1. 状态行

格式:HTTP版本号 状态码 原因叙述<CRLF>

举例:HTTP/1.1 200 OK

2. 状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码分为5类,使用最高位为1到5来进行分类如下所示:

状态码

含义

100199

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

200299

表示成功接收请求并已完成整个处理过程

300399

为完成请求,客户需进一步细化请求。例如,请求的资源已经移动一个新地址

400499

客户端的请求有错误

500599

服务器端出现错误

十、HTTP响应的细节——常用状态码

  • 200(正常):表示一切正常,返回的是正常请求结果
  • 302/307(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
  • 304(未修改):表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
  • 404(找不到):服务器上不存在客户机所请求的资源。
  • 500(服务器内部错误):服务器端的程序发生错误。

十一、HTTP请求的细节——请求头

1. 请求头字段用于客户端在请求消息中向服务器传递附加信息,主要包括客户端可以接受的数据类型(MIME类型)、压缩方法、语言以及发出请求的超链接所属页面的URL地址等信息。

2. 常用请求头:

  • Accept:浏览器可接受的MIME类型
  • Accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集
  • Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
  • Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。
  • Host:初始URL中的主机和端口
  • Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。
  • Content-Type:内容类型
  • If-Modified-Since:Wed,02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。
  • User-Agent:浏览器类型
  • Content-Length:表示请求消息正文的长度
  • Connection:表示是否需要持久连接。如果服务器看到这里的值为"Keep -Alive",或者看到请求使用的是HTTP1.1(HTTP1.1默认进行持久连接)
  • Cookie:这是最重要的请求头信息之一
  • Date:Date:Mon, 22 Aug 2011 01:59:39 GMT请求时间GMT

十二、HTTP响应细节——常用响应头

1. 响应头字段用于向客户端传递附加信息

2. 常用响应头

  • Location:http://www.it.org/index.jsp指示新的资源的位置
  • Server:apache tomcat指示服务器的类型
  • Content-Encoding: gzip 服务器发送的数据采用的编码类型
  • Content-Length:80告诉浏览器正文的长度
  • Content-Language:zh-cn服务发送的文本的语言
  • Content-Type:text/html;charset=GB2312服务器发送的内容的MIME类型
  • Last-Modified:Tue, 11 Jul 2000 18:23:51 GMT文件的最后修改时间
  • Refresh:1;url=http://www.it.org指示客户端刷新频率。单位是秒
  • Content-Disposition:attachement;file=aaa.zip指示客户端下载文件
  • Set-Cookie:SS=QQ=5Lb_nQ; path=/search服务器端发送的Cookie
  • Expires:-1
  • Cache-Control:no-cache(1.1)
  • Pragma:no-cache(1.0)
  • Connection:close/Keep-Alive
  • Date:Tue, 11 Jul 2000 18:23:51 GMT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值