HTTP协议:
1、用于客户端和服务器之间的通信,无状态协议,即自身不对请求和响应之间的通信状态保存,可快速的处理大量事务,确保协议的可伸缩性
2、HTTP请求图:
请求完整URI:
GET http://hackr.jp/index.htm HTTP/1.1
GET:方法,表示请求访问服务器类型,
/index.htm:指明访问的资源对象,即URI
HTTP/1.1,HTTP版本号,用来提示客户端的HTTP功能
首部字段Host中写明网络域名或IP
GET /index.Htm HTTP/1.1
Host:hackr.jp
请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成
告知服务器意图的HTTP方法:
GET:获取资源,用来请求与访问URI识别资源啊
Post:传输实体主题
PUT:传输文件
HEAD:获得报文首部
DELETE:删除文件、
POTION:询问支持的办法
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
HTTP链接方式:
短链接:
长连接:建立一次TCP链接可进行多次请求和响应的交互,只要任意一端没有提出明确的连接断开,就保持TCP连接状态
管线化:可以同时发送多个请求,而不需要等待回应后才能发送下一个请求
端口不断开合会影响服务器的性能,持久连接减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器的负载,在HTTP1.1中,所有连接默认为持久性链接
3、无状态协议优点:不必保存状态,可减少服务器的CPU及内存资源的消耗但同时也有很多不便。为了解决HTTP的无状态性带来的不便,引入了Cookie技术
Cookie:用户识别及状态管理
使用Cookie的状态管理:通过在请求和响应报文中写入Cookie信息开控制客户端访问的状态;
Cookie会根据客户端发来的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie,下次客户端访问服务器携带此Cookie值,服务器会根据此Cookie值查询发送此请求的客户端,对比记录,得到之前的状态信息,例:淘宝浏览商品和付款
正规Cookie内的数据不会因来自其他web站点和攻击者的攻击而泄露,因为Cookie优可校验的有效期,以及发送方的域、路径、协议等信息
为Cookie服务的首字端:
Set-Cookie:
Set-Cookie:status=enable;expires=Tue,05 Jul 2011 07:26:31 GMT;path=/;domain=.hackr.jp;
Set-Cookie字段属性:
NAME=VALUE,赋予Cookie的名称及值(必须项)
Expires:指定浏览器可以发送Cookie的有效期
当省略时,其有效期仅限于浏览器会话保持时间段内。一旦Cookie从服务器发送至客户端,服务器就不存在可以删除Cookie的方法,可以覆盖过期Cookie,实现对客户端Cookie的实质性删除操作
Path:可以指定Cookie的发送范围的文件目录
Domain:指定的域名可做到与结尾匹配一致,不论指定域名前是什么,都可发送Cookie。例指定a.com,处它外www.a.com,www2.a.com都可发送Cookie
Secure:用于限制web界面仅在HTTPS安全连接时,才可发送Cookie。发送Cookie时指定secure属性的方法如下:
Set-Cookie:name=value;secure
仅在HTTPS安全连接下才会进行Cookie回收,忽略时HTTP与HTTPS都会回收
HttpOnly:Cookie扩展功能,使JavaScript脚本无法获得Cookie,防止跨站脚本攻击(Cross-site scripting,XSS)对Cookie的信息窃取
Cookie:status=enable
首部字段Cookie会告知服务器,当客户端想要获得状态管理支持时,会在请求中包含从服务器接收到的Cookie,接收到多个时,也可以以多个的形式发送
4、
请求命令方法(适用HTTP1.1):
GET:获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文头部
DELETE:删除文件
OPTIONS:询问支持方法
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
参考:《图解HTTP》