顶级域名与二级域名共享Cookie测试

来源:互联网 发布:网站模板源码免费下载 编辑:程序博客网 时间:2024/05/15 23:44

1.修改hosts

在hosts文件中添加如下配置:

# Test Cookie127.0.0.1 xx.hostName.com127.0.0.1 hostName.com127.0.0.1 xx1.hostName.com

其中hostName.com为顶级域名,另外两个是二级域名

2.建立web项目并添加Cookie测试类

2.1BaseController.java:

package org.es.skinservice.web;import javax.annotation.Resource;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletResponse;import org.es.skinservice.service.RolesService;import org.es.skinservice.utils.HttpCode;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping(value = "/cookie")public class CookiesController extends BaseController {    @Resource    private RolesService rolesService;    @RequestMapping(value = "/setCookie/{id}", method = RequestMethod.GET)    @ResponseBody    public String setCookie(HttpServletResponse response, @PathVariable("id") String id) {        Cookie cookie = new Cookie("name" + id, id);        cookie.setDomain("hostname.com");        cookie.setPath("/");        response.addCookie(cookie);        return getResult(HttpCode.OK_GET, cookie);    }    @RequestMapping(value = "/getCookie", method = RequestMethod.GET)    @ResponseBody    public String getCookie() {        Cookie[] cookies = request.getCookies();        return getResult(HttpCode.OK_GET, cookies);    }}

2.2CookiesController.java

package org.es.skinservice.web;import javax.annotation.Resource;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletResponse;import org.es.skinservice.service.RolesService;import org.es.skinservice.utils.HttpCode;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping(value = "/cookie")public class CookiesController extends BaseController {    @Resource    private RolesService rolesService;    @RequestMapping(value = "/setCookie/{id}", method = RequestMethod.GET)    @ResponseBody    public String setCookie(HttpServletResponse response, @PathVariable("id") String id) {        Cookie cookie = new Cookie("name" + id, id);        ***cookie.setDomain("hostname.com");***        cookie.setPath("/");        response.addCookie(cookie);        return getResult(HttpCode.OK_GET, cookie);    }    @RequestMapping(value = "/getCookie", method = RequestMethod.GET)    @ResponseBody    public String getCookie() {        Cookie[] cookies = request.getCookies();        return getResult(HttpCode.OK_GET, cookies);    }}

3.测试

第一步:通过浏览器访问http://xx.hostname.com:1180/cookie/setCookie/xx 添加cookie
第二步:分别通过浏览器访问http://xx.hostname.com:1180/cookie/getCookie http://xx1.hostname.com:1180/cookie/getCookie http://hostname.com:1180/cookie/getCookie 观察结果中的Cookie,三个的结果都如下:

[{    "name": "JSESSIONID",    "value": "54DBED263ED0CE861E3AC12187A24DF0",    "version": 0,    "maxAge": -1,    "secure": false,    "httpOnly": false},{    "name": "namexx",    "value": "xx",    "version": 0,    "maxAge": -1,    "secure": false,    "httpOnly": false}]

说明共享cookie成功!
我们还可以以同样的方式测试顶级域名添加Cookie然后通过二级域名获取对应的Cookie,得到的结果也是相同的

上面顶级域名和二级域名共享cookie成功的关键在于这一行代码:

cookie.setDomain("hostname.com");

也就是说必须将cookie的domain设置成顶级域名的hostname,否则通过那个域名设置的cookie只能通过当前域名才能获取到

0 0
原创粉丝点击