`

06_Cookie和Session

 
阅读更多

一、Cookie相关

二、Session相关

三、域名(Domain)

四、去掉项目名称将服务映射成域名访问

 

一、Cookie相关

       Cookie的大体原理是,服务器端根据需要向客户端写入cookie后(最多20个),浏览器每次向服务器端发送访问请求时,它都要根据下面的几个规则,决定是否发送Cookie请求头字段,以及在Cookie请求头字段中附带哪些Cookie信息。
 1、请求的主机名是否与某个存储的Cookie的Domain属性匹配
 2、请求的资源路径是否在该Cookie的Path属性指定的目录及子目录中
 3、该Cookie的有效期是否已过期

 

根据Cookie的生存时间来分类Cookie可以分为3大类:

 1、cookie.setMaxAge(100) //参数大于0,有效秒数
  对于有失效时间的Cookie没失效之前:在同一台客户端都是共享的
 2、cookie.setMaxAge(0)  //参数等于0,废弃掉
    通知浏览器立即删除这个Cookie,相当于废弃掉这个cookie,因为请求的时候再会发送这个Cookie
 3、cookie.setMaxAge(-1) //参数小于0,浏览器关闭后消失,默认情况
    对于没有失效时间的Cookie:保存在内存中的Cookie:
    IE6、IE7默认情况下,同一个进程共享才Cookie,可是IE8所有的进程默认都会共享Cookie
    如果想让IE8默认跟IE6和IE7相同,在快捷方式右键的目标属性后面添加 -nomerge
    如:"C:\Program Files\Internet Explorer\iexplore.exe" -nomerge

 

二、Session相关

1、在不禁用Cookie的情况下保持会话有三种形式
  (1)附加URL参数的方式,这种方式的缺点(麻烦、不安全、网络压力大、大小还有限制)
  (2)完全只用Cookie的形式,这种方式的缺点(网络压力大、数量和大小有限制)
  (3)Cookie和Session结合,Cookie只记录SessionID具体信息有服务器端的Session来记录,SessionID的传输也是跟cookie的传输一样的 都是通过cookie头字段来传送的,只是向客户端回传的的时候由服务器根据具体情况自动完成的,如果我们调用了request.getSession后服务器就会将返回的该Session的SessionID自动加入到响应的cookie头字段,否者不会添加(基本上都是采用这种形式)
2、在禁用Cookie的情况下只能通过URL重写的形式保持会话
   (其实这也算是附加URL参数的一种特例,只是只传送一个参数,只是jsessionid参数是通过接口提供的
    response.encodeRedirectURL()或response.encodeRedirectURL()函数自动添加的,如果服务端调用了request.getSession的情况下,这两个方法就会在参数后面附加SessionID,否者不会附加SessionID)

 

三、域名(Domain)

域名:域名可以理解为IP地址的符号化地址方案,主要是为了便于记忆和书写。
一个域名一一映射一个IP:当一台机器只部署一个服务的时候。
一个域名可以映射多个IP:当一个相同的服务部署到多台机器的情况,例如像www.baidu.com 当我们输入该地址时,不同的人不同的位置和不同的时间,DNS返回的IP有可能是不同的可以理解成一个域名可以映射多个IP,不过一个域名某一时刻的某次请求只能映射一个IP。
一个IP映射可以映射多个域名:当一个机器上部署多个服务,而每个服务都需要映射一个域名的时候,一个IP就映射多个域名了

 

四、去掉项目名称将服务映射成域名访问

例如:我们想将 http://192.168.55.66:8080/TestWSServer/index.jsp  的服务首页映射成域名为

http://www.mySite.com/ 的网站,这里需要做三部工作:

1、在TestWSServer项目中的web.xml中将index.jsp设置成默认首页

2、在Tomcat等应用服务器中将端口设置为80

3、通过DNS服务器,将IP映射成域名,192.168.55.66 映射成www.mySite.com

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics