第六节课:
HTTP请求和响应消息格式:
为啥都已经建立连接了,还有些host属性,还要写主机域名
TCP连接都建立了为啥还声明访问的主机
缓存和代理服务器会使用这个信息,除此之外确实没啥用
user-agent: 浏览器版本
请求消息还要携带数据吗?
比如登录时,请求消息就要携带数据
get是获取网页
什么时候用post呢
网页经常需要填写表格,然后就会在请求消息的消息体上传客户端的输入,传给服务器。服务器把数据提出来,get是放在URL上
get也可以上传叫 URL方法,如果信息少的话可以用get方法
HTTP1.0 GET POST HEAD请求服务器不要把请求的对象放入响应消息中,只返回头部的同喜,做测试用
HTTP 1.1 GET POST HEAD 加入了
put 方法把消息体里面的文件上传到URL字段所指定的路径,往web服务器上传文件
delete删除URL路径所指定的文件
响应消息中的
Date字段是web服务器生成这个响应消息的时间
last-modified:这个网页上次的修改时间
Server:告诉使用的web服务器软件是啥Apache
把Apache下载下来,就可以架设一个web服务,花点钱买一个域名,这样就拥有一个自己的网站
Content-Length内容的长度
Content-Type :内容的类型 text/html
第七节课:
为什么需要cookie
因为http协议无状态,如网上购物,如何实现,
请求消息和响应消息中的请求行是可扩展的,cookie也是后来才加上去的
Cookie技术
某些网站为了辨别用户身份,进行session(会话)跟踪而存储在用户本地终端上的数据(通常加密)
Cookie的组件
1.HTTP响应消息的cookie头部行
2.HTTP请求消息的cookie头部行
3.保存在哭护短主机上的cookie文件,由浏览器管理
4.web服务端的后台数据库
流程
1.客户端有一个cookie文件是没有cookie的 只有一个ebay:8734
客户端首次访问服务器,发一个常规的http请求消息
2.服务器收到后,发现是个新的的用户,就给他生成cookie一个ID号 还有客户信息放到数据库里面去,
然后回给客户端一个响应消息,里面带有Set-cookie字段 把id协商
3.客户端接受到了就会解析出来在cookie文件里面写到我在某网站的唯一标识是啥
4.下次在访问的时候,请求消息里面的请求行就会有一个cookie字段,带上id
5.服务器就可以做面向这个客户的特定动作,比如他的购物车里都添加了啥啊,该给他推荐点啥啊,然后发响应消息给客户端
Cookie能够用于:
身份认证
购物车
推荐
Web e-mail
比如问你需不需要保存在该网页的登录信息
Cookie隐私问题:你在网络上的一举一动都是被检测和记录
然后在买给广告商啥的
第8节课:Web缓存/代理服务器技术
功能:在不访问服务器的前提下满足客户端的HTTP请求
为啥要发明这种技术?
主要是从性能方面考虑
1.缩短客户请求的响应时间
2.减少机构/组织的流量
3.在大范围内实现有效的内容分发
在客户和服务器之间架设了一个代理服务器
1.用户设定浏览器通过缓存服务器进行web访问
2.浏览器向缓存/代理服务器发送所有的HTTP请求
如果所请求对象在缓存服务器中,缓存服务器就返回兑现
否则,缓存服务器向原始服务器发送HTTP请求,获取对象,然后返回给客户端并保存该对象,同时把这个对象保存起来
A已经访问过了,缓存服务器已经保存过了,B和A使用同一个代理服务器,B在访问,缓存服务器就可以直接返回了
所以缓存服务器既当客户端又当服务器
一般由组织或者ISP(Internet服务提供商)架设
代理服务器的命中率一般是20%到70%,
你怎么知道访问的缓存服务器上面的信息的版本和远程服务器上的版本一致吗
看新闻,访问缓存服务器发现都是昨天的旧闻
有一个问题就是缓存服务器上面缓存的对象是不是和远程服务器上一样,只有一致,服务才是好的
有一个办法就是HTTP有一个条件性GET方法
http请求里面有一个last-modified
基本思想:
如果缓存的版本是最新的版本,缓存在想服务器发条件性GET的时候,服务器就不发了,只用会一个响应消息
缓存:在HTTP请求消息中声明所持有的版本的信息 字段If-modified-since:<date>
就是从这个日期开始算起,如果你改了,就给我发,没改就告诉我没改,
没改的响应消息不包含对象, 使用304代码,告诉你没改变,你现在拿的就是新的(对带宽的 使用很少,是节省带宽的)
改了的相应消息200,ok 把对象给他