java教程

java cookie 二级域名共享 设置读取删除方法

位置:首页 > java教程 > java技巧,2017-11-15 10:09
今天开发中使用到了java cookie二级域名问题,下面说说java cookie 二级域名共享 设置读取删除方法


对于任何web 前端技术,都可以对创建cookie并且可以修改同域下cookie的数据.

一个cookie是一个K-V的字符串,同时可以传递一些属性.


Cookie cookie = new Cookie("key","value");  
cookie.setMaxAge(-1);  
cookie.setDomain("abc.com");  
cookie.setSecure(false);  
cookie.setPath("/")  

一个cookie如上4个重要的属性:

1)maxAge:cookie被客户端保持的时间,单位为(秒),正数表示在指定的秒数后过期被客户端删除,0表示删除此cookie(置空),负数则表示此cookie不会被客户端存储,将在浏览器关闭后清除.

2)domain:cookie可被有效操作的域,可以为ip/hostname等,不过需要声明:*.abc.com,.abc.com,abc.com这三种方式会有区别,客户端会做简单的匹配.多数情况下直接使用abc.com可以接受多级子域名.只有正确匹配domain的cookie才会被发送给server.

3)secure:是否只允许安全加密url访问,默认为false,如果为true,那么cookie只对https/SSL等加密连接才会发送给server.

4)path:cookie对domain何路径下访问有效,"/"表示domain下根目录中所有请求有效,"/open"表示只对domain/open目录下请求有效,如果此path忘记设置,你将遇到一个很尴尬的问题:明明在其他页面设置了cookie输出,但是换个页面却死活不行..

 

domain和path是决定可跨域的2个参数.

对于domain,"abc.com"则可以在abc.com主域名之下的多级子域名有效,".abc.com"只能在二级域名以及"www.abc.com"下有效,其实客户端只是做了简单的匹配..你可以在此基础上做更多的分级控制..

path是个有参考意义的属性,对于部分路径下开放访问的系统有意义,比如:abc.com/open下的程序和登录是开放给特殊开发者接入的,这里的数据活着cookie需要做一些另类的处理..


例子:

   public String getcookie(String yzmtag){
    	String ma=null;
    		HttpServletRequest request = ServletActionContext.getRequest();
    		Cookie[] c = request.getCookies();
    		if (c != null && c.length > 0) {
    			for (Cookie cd : c) {
    				if (cd.getName().equals(yzmtag)) {
    					String y=cd.getValue();
    				if(null!=y){
    					ma=y;	
    					break;
    				}
    				}
    				}
    			}
    		
    	return ma;
    	}
    public void savecookie(String yzmtag,String yzm,int time){
    	HttpServletResponse response = ServletActionContext.getResponse();
    	Cookie cookie = new Cookie(yzmtag,yzm);
    	cookie.setMaxAge(time);
    	cookie.setPath("/");
    	cookie.setDomain("ablanxue.com");
    	response.addCookie(cookie);
    	}
    
    public void delcookie(String yzmtag){
    	HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response = ServletActionContext.getResponse();
		Cookie[] c = request.getCookies();
		if (c != null && c.length > 0) {
			for (Cookie cd : c) {
				if (cd.getName().equals(yzmtag)) {
					cd.setMaxAge(0);
					cd.setPath("/");
					cd.setDomain("ablanxue.com");
					response.addCookie(cd);
					break;
				}
			}
		}
    	}




TAGS:java cookie 二级域名



猜你喜欢


NewHot手机版