目录
1、HTTP概述
2、安装HttpWatch
3、响应协议的格式
4、响应信息如下
5、常见响应码
6、响应码304详解 (===涉及缓存,理解===)
7、HTML中指定响应头
==========================================================================
HTTP协议(重点)
协议:协议的甲乙双方,就是客户端浏览器 和 服务器!理解成双方通信的格式!
请求协议;
响应协议;
1、HTTP概述
HTTP (HyperText Transfer Protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间
互相通信的规则。HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给
客户端的内容格式。其实我们要学习的就是这个两个格式!
客户端 发送给 服务器 的格式叫“请求协议”;
服务器 发送给 客户端 的格式叫“响应协议”。
2、安装HttpWatch(如果用IE)
HttpWatch是专门为IE浏览器提供的,用来查看HTTP请求和响应内容的工具。而FireFox上需要安装FireBug软件。
如果你使用的是Chrome,那么就不用自行安装什么工具了,因为它自身就有查看请求和响应内容的功能!
HttpWatch 和 FireBug这些工具对浏览器而言不是必须的,但对我们开发者是很有帮助的,通过查看HTTP请求响应
内容,可以使我们更好的学习HTTP协议。
3、响应协议的格式
响应就是服务器发送给客户端的数据! 服务器 ----> 客户端
响应格式:
----------------------------------------------------------------------------------------------
| * 响应首行
| * 响应头
| * 空行
| * 响应体(或称之为响应正文)
----------------------------------------------------------------------------------------------
4、响应信息
响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示。
--------------------- 响应信息如下 -------------------------------------------------------
| HTTP/1.1 200 OK [响应首行]
| Server: Apache-Coyote/1.1
| Content-Type: text/html;charset=UTF-8
| Content-Length: 724
| Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello
| Date: Wed, 25 Sep 2012 04:15:03 GMT
| [描述:这是空行]
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
| <html>
| <head>
| <base href="http://localhost:8080/hello/">
|
| <title>My JSP 'index.jsp' starting page</title>
| <meta http-equiv="pragma" content="no-cache">
| <meta http-equiv="cache-control" content="no-cache">
| <meta http-equiv="expires" content="0">
| <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
| <meta http-equiv="description" content="This is my page">
| </head>
|
| <body>
| <form action="" method="post">
| 关键字:<input type="text" name="keyword"/>
| <input type="submit" value="提交"/>
| </form>
| </body>
| </html> [描述:响应体]
--------------------- 响应信息结束 ------------------------------------------------------
响应头信息解释:
* HTTP/1.1 200 OK --> 响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
* Server: Apache-Coyote/1.1 --> 服务器的版本信息;
* Content-Type: text/html;charset=UTF-8 --> 响应正文的MIME类型,例如image/jpeg表示响应正文
为jpg图片,本信息:text/html;charset=utf-8 表示响应正文为html,并且编码为utf-8编码。
浏览器会通过这一信息来显示响应数据。
* Content-Length: 724 --> 响应体为724字节;
* Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello
--> 响应给客户端的Cookie;
* Date: Wed, 25 Sep 2012 04:15:03 GMT --> 响应的时间,这可能会有8小时的时区差;
其他响应头:
通知客户端浏览器不要缓存页面的响应头:(这三个放一起表示不缓存)
* Expires:-1 (表示立即过期)
* Cache-Control: no-cache (不缓存)
* Pragma: no-cache (不缓存)
自动刷新响应头,浏览器会在3秒钟后自动重定向到传智主页
* Refresh: 3;url=http://www.itcast.cn
5、常见响应码
响应头对浏览器来说很重要,它说明了响应的真正含义。
* 200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
* 302:重定向,当响应码为302时,表示浏览器第一次请求服务器时,服务器发送给浏览器一个Location响应头,
它指定了新请求的URL地址,这时浏览器重新再发一个新URL地址的请求,并得到响应。浏览器地址栏的
路径会变为新的URL地址。
* 304:表示访问的资源没有改变,浏览器可以使用本地缓存页面。
* 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
* 500:请求资源找到了,但服务器内部出现了错误;
重定向
6、响应码304详解 (===涉及缓存,理解===)
相关头信息
* Last-Modified:响应头,表示当前资源的最后修改时间;
* If-Modified-Since:请求头,表示缓存的资源最后修改时间;
状态码304:表示访问的资源没有改变
1、客户端首次访问服务器的静态资源index.html,服务器会把index.html响应给客户端,而且还会添加一个
名为Last-Modified的响应头,它说明了当前index.html的最后修改时间。
2、客户端收到响应后,会把index.html缓存在客户端上,而且还会把Last-Modified缓存起来。
3、客户端第二次请求index.html时,会添加名为If-Modified-Since的请求头,它的值是上次服务器
响应头Last-Modified,服务器获取到客户端保存的最后修改时间,以及当前资源的最后修改时间进行比较,
如果相同,说明index.html没有改动过,那么服务器不会发送index.html,而是响应状态码304,即通知
客户端资源没有改变,你可以使用自己的缓存。
7、HTML中指定响应头
在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,例如在index.html页面中给出
<meta http-equiv="Refresh" content="3;url=http://www.itcast.cn">
表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.itcast.cn