http协议

(1)http协议请求过程

1. 当你在浏览器输入URL http://www.cnblogs.com 的时候,浏览器发送一个Request去获取 http://www.cnblogs.com html. 服务器把Response发送回给浏览器.

2. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件。

3. 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

4. 等所有的文件都下载成功后。 网页就被显示出来了。

总结:一个文件对应一次请求

 

(2)Request 消息的结构

GET http://localhost/test/assets/eb4c2dd7/jquery.js HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0

Accept: */*

Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost/test/site/contact.do

Cookie: PHPSESSID=8vcfghld213br3bu21qmdhuvh0

Connection: keep-alive

请求方法 第一个GET POST 第二个为请求的资源 第三个为http的协议版本 

 

我们再看Response消息的结构Request消息的结构基本一样。 同样也分为三部分,第一部分叫Response line, 第二部分叫Response header,第三部分是body. headerbody之间也有个空行,

 

HTTP/1.1 200 OK //状态行

Date: Wed, 05 Mar 2014 07:05:38 GMT

Server: Apache/2.2.17 (Win32) PHP/5.3.3

Last-Modified: Mon, 20 Jan 2014 06:58:27 GMT

ETag: "300000000a015-34f08-4f0616b355447"

Accept-Ranges: bytes

Content-Length: 216840

Keep-Alive: timeout=5, max=99

Connection: Keep-Alive

Content-Type: application/javascript

第一个参数http协议 状态吗200 返回信息OK

 

http协议与服务器交互的方法四种 GET, POST, PUT, DELETE 查,改,增,删

 

状态码

HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

1XX 提示信息 表示请求已被成功接收,继续处理

2XX 成功 表示请求已被成功接收,理解,接受

3XX 重定向 要完成请求必须进行更进一步的处理

4XX 客户端错误 请求有语法错误或请求无法实现

5XX 服务器端错误 服务器未能实现合法的请求

 

200 OK

最常见的就是成功响应状态码200了, 这表明该请求被成功地完成,所请求的资源发送回客户端

 

302 Found

重定向,新的URL会在response 中的Location中返回,浏览器将会自动使用新的URL发出新的Request

 

304 Not Modified

代表上次的文档已经被缓存了, 还可以继续使用,

 

400 Bad Request 客户端请求与语法错误,不能被服务器所理解

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

404 Not Found

 

500 Internal Server Error 服务器发生了不可预期的错误

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

 

Cache 头域

 

If-Modified-Since

 

作用: 把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中.

 

If-None-Match

 

作用: If-None-MatchETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能

 

Pragma

作用: 防止页面被缓存, 在HTTP/1.1版本中,它和Cache-Control:no-cache作用一模一样

 

Cache-Control

 

作用这个是非常重要的规则。 这个用来指定Response-Request遵循的缓存机制。各个指令含义如下

 

Cache-Control:Public 可以被任何缓存所缓存()

Cache-Control:Private 内容只缓存到私有缓存中

Cache-Control:no-cache 所有内容都不会被缓存

 

Client 头域

 

Accept

作用: 浏览器端可以接受的媒体类型

通配符 代表任意类型

Accept-Encoding

 

作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzipdeflate),(注意:这不是只字符编码)

Accept-Encoding: gzip, deflate

 

 

 

ransport 头域

 

Connection

 

例如:Connection: keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

例如:Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

Host(发送请求时,该报头域是必需的)

作用请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的

 

 

Respone信息结构

Cache头域

 

Date

作用生成消息的具体时间和日期

例如: Date: Sat, 11 Feb 2012 11:35:14 GMT

 

Expires

作用浏览器会在指定过期时间内使用本地缓存

例如: Expires: Tue, 08 Feb 2022 11:35:14 GMT

 

Set-Cookie

作用: 非常重要的header, 用于把cookie 发送到客户端浏览器, 每一个写入cookie都会生成一个Set-Cookie.

Set-Cookie: sc=4c31523a; path=/; domain=.acookie.taobao.com

 

Miscellaneous 头域

 

Server:

作用:指明HTTP服务器的软件信息



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值