http

《HTTP权威指南》每章的知识点总结

View the Project on GitHub lvzhenbang/http

内容提要

外在原因

能解决的问题

1、个性化的问候

2、有的放矢的推荐

3、管理信息的存档

4、记录会话

http报文中承载用户信息的首部

1、From:用户的E-mail地址

2、User-Agent:用户代理或爬虫标记

3、Referer:当前页面是从那个页面跳过来的

4、Authoriztion:用户的用户名和密码

5、Client-IP : 扩展(请求)

6、X-Forwarded-For : 扩展(请求)

7、Cookie:扩展(请求)

客户端IP地址

1、首先ip标记是客户端机器,而不是用户,也就是说多个用户公用一台机器,是无法识别的!

2、很多ip地址是动态的,所以不能在一次会话之间用ip地址来验证一个用户信息

3、使用代理的时候,此时发送的ip地址是代理的ip地址,而不是用户的ip地址,虽然代理可以加一个首部来保证最初的ip地址信息,但是不兼容

4、ip地址很容伪造,所以不安全

用户登录

胖URL

1、丑陋的url

2、无法共享url,因为用户信息在url里面,共享url同时也会把用户信息共享出去了

3、破坏缓存

4、额外的服务器负荷

5、逃逸口,很容易造成用户不小心跳到另一个网站,返回过来的收用户的信息全部没了,比如购物车里面的东西全部没了

6、会话是非持久的

Cookie的属性

不同站点使用不同的cookie

cookie版本

 		Cookie: session-id=002-1145265-8016938; session-id-time=1311313313131

cookie机制还有一个版本就是RFC 2965定义的一个cookie的扩展版本。这个版本1标准引入了Set-Cookie2首部和Cookie2首部,但它也能与“版本0”系统进行互操作。“版本1”跟“版本0”的区别就是,提供了更多的属性来描述一个cookie,同时服务器端发送的是“Set-Cookie”首部,而客户端发送的是“Cookie”首部,如:

 		服务器端
 	 	Set-Cookie2: ID="29046"; Domain=".joes-hardware.com"
 	 	Set-Cookie2: color=blue
 	 	Set-Cookie2: support-pref="L2"; Domain="customer-care.joes-hardware.com"
 	 	Set-Cookie2: Coupon="hammer027"; Version="1"; Path="/tools"
 	 	Set-Cookie2: Coupon="handvac103"; Version="1";Path="/tools/cordless"

 	 	客户端
 	 	Cookie: $Version="1";
 	 			ID="29046"; $Domain=".joes-hardware.com";
 	 			color="blue";
 	 			Coupon="hammer027"; $Path="/tools";
 	 			Coupon="handvac103"; $Path="/tools/cordless"

另外Cookie2首部是用来沟通支持版本0和版本1的服务器的,它会发送当前客户端支持的最新版本cookie版本,如:

		Cookie2: $Version="1"