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

1.修改hosts

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

# Test Cookie
127.0.0.1 xx.hostName.com
127.0.0.1 hostName.com
127.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只能通过当前域名才能获取到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值