http请求的理解,请求头,响应头解释

1. 浏览器发送一个url请求,浏览器首先会验证这个请求是否已经存在缓存中,如果存在且有效,直接响应出来
2. 如果并没请求过此url或者缓存已经失效,则解析url的域名,找到其真实ip
3. 然后请求主机与目的主机通过tcp建立起连接
4. 此时请求主机可以向目的主机发送http等请求,请求类型请求头中的方法
5. 请求主机在请求目的主机时可能会经过代理服务器,请求由代理服务器转发给目的主机
6. 目的主机接收到请求后会在自身下的vhost中查找对应的域名,然后确定文件所在目录。
7. 如果请求的是html文件,则目的主机(服务器)直接返还给代理服务器,由代理服务器转发给请求主机
8. 如果请求的是php文件,则服务器将该文件交由fastcgi进行处理解析,解析出来的html文件,由目的主机(服务器)通过代理服务器转发给请求主机
9. 请求主机收到html文件后,浏览器会自动解析,渲染,当遇到js/css/image文件时,再去请求服务器下载相应的文件。

一个完整的请求应该包括以下几部分:<br/>
请求行,有请求方法,请求地址,和协议版本组成<br/>
```
通用报头

既可以出现在请求报头,也可以出现在响应报头中

Date:表示消息产生的日期和时间

Connection:允许发送指定连接的选项,例如指定连接是连续的,或者指定“close”选项,通知服务器,在响应完成后,关闭连接

Cache-Control:用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)
```
请求头
```
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

User-Agent:发送请求的浏览器类型、操作系统等信息

refer:来源

Accept:客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息

Accept-Encoding:客户端可识别的数据编码

Accept-Language:表示浏览器所支持的语言类型

Connection:允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接。

Transfer-Encoding:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式。
```
请求体:请求所附加的信息,可理解为参数,get请求的参数是在url中,所以get请求没有请求体

一个完整的相应应包含以下几部分:<br/>
状态行,一系列的状态码<br/>
响应头,结构与请求头一样<br/>
响应正文,我们所期望的内容吧<br/>

Host:rss.sina.com.cn        //客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14               //头域的内容包含发出请求的用户信息。 
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5        //定义客户端可以处理的媒体类型,按优先级排序;在一个以逗号为分隔的列表中,可以定义多种类型和使用通配符。
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Cookie:userId=C5bYpXrimdmsiQmsBPnE1Vn8ZQmdWSm3WRlEB3vRwTnRtW   <– Cookie 
If-Modified-Since:Sun, 01 Jun 2008 12:05:30 GMT
Cache-Control:max-age=0

与缓存有关的扩展消息头(响应头中)
```
Expires:指示响应内容过期的时间,格林威治时间GMT
Cache-Control:更细致的控制缓存的内容  max-age就是确定缓存的时间。
Last-Modified:响应中资源最后一次修改的时间
ETag:响应中资源的校验值,在服务器上某个时段是唯一标识的。
Date:服务器的时间
If-Modified-Since:客户端存取的该资源最后一次修改的时间,同Last-Modified。
If-None-Match:客户端存取的该资源的检验值,同ETag。
```


HTTP 响应消息头部实例:
Status:OK - 200                                                <– 响应状态码,表示 web 服务器处理的结果。 
Date:Sun, 01 Jun 2008 12:35:47 GMT
Server:Apache/2.0.61 (Unix)
Last-Modified:Sun, 01 Jun 2008 12:35:30 GMT
Accept-Ranges:bytes
Content-Length:18616
Cache-Control:max-age=120
Expires:Sun, 01 Jun 2008 12:37:47 GMT
Content-Type:application/xml
Age:2
X-Cache:HIT from 236-41.D07071951.sina.com.cn                  <– 反向代理服务器使用的 HTTP 头部
Via:1.0 236-41.D07071951.sina.com.cn:80 (squid/2.6.STABLE13)
Connection:close

> http的缓存机制:<br>
HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。

> https<br>
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL

参考:https://www.cnblogs.com/mamimi/p/6900987.html

慕斯才:
比如浏览器对css和js的缓存,什么情况下会用缓存

慕斯才:
比如http和https
https是在http基础之上加了ssl层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值