您的位置:首页 > 大数据 > 人工智能

Http Cookie 测试 Domain & Path

2017-02-10 17:06 260 查看
参考:

http://blog.csdn.net/lijing198997/article/details/9378047

http://stackoverflow.com/questions/1062963/how-do-browser-cookie-domains-work

Domain and Path

作用:定义Cookie的生效作用域,只有当域名和路径同时满足的时候,浏览器才会将Cookie发送给Server。如果没有设置Domain和Path的话,他们会被默认为当前请求页面对应值。

Cookie with Domain=.example.com will be available for www.example.com

Cookie with Domain=.example.com will be available for example.com

Cookie with Domain=example.com will be converted to .example.com and thus will also be available for www.example.com

Cookie with Domain=example.com will not be available for anotherexample.com

跨域的请求是无法设置cookie的。 ()

Example:

Tomcat Java Web App通过服务端来设置浏览器cookie

服务端在请求的返回中向客户端的浏览器添加cookie。

示例的服务的context path 为/bee

@RequestMapping(value = "/cookietest", headers = "Accept=image/**", method = RequestMethod.GET)
public ResponseEntity<?> cookieTest(final HttpServletRequest request,HttpServletResponse response) {
Cookie cookie1 = new Cookie("cookie-1",UUID.randomUUID().toString());
cookie1.setDomain("diaoyouyun.com");
cookie1.setPath("/");
response.addCookie(cookie1);

Cookie cookie2 = new Cookie("cookie2","Cookie2");
cookie2.setDomain("www.diaoyouyun.com");
cookie2.setPath("/bee/collect");
response.addCookie(cookie2);

Cookie cookie3 = new Cookie("cookie3","cookie3");
cookie3.setDomain("www.example.com");
response.addCookie(cookie3);

Cookie cookie4 = new Cookie("cookie4","cookie4");
response.addCookie(cookie4);
return ok();
}


测试一

请求 http://diaoyouyun.com/bee/cookietest 如下:



那些cookie会被接受呢?访问http://diaoyouyun.com/bee 从下图可以看出



访问http://www.diaoyouyun.com/bee/来查看有哪些cookie



关于Java Tomcat 服务端Set-Cookie: 可以得出以下结论:

不显示地设置domain,浏览器接受去当年请求的domain,但是前面不加点(.)。即:如果当前请求domain是example.com,那么这个cookie就不能被www.example.com 或者其他***.example.com访问到.

显示设置domain,只有设置正确的情况,cookie才会被浏览器接受

测试二

测试前清空相关站点的cookie

通过请求:http://www.diaoyouyun.com/bee/cookietest 来设置cookie



访问http://www.diaoyouyun.com/bee/



发现还是只有cookie-1和cookie4, 但是其实cookie2 也被浏览器接受了,只是cookie2 设置的path是/bee/collect 所以基于当前访问路径(http://www.diaoyouyun.com/bee/)chrome的开放工具中无法查看到cookie2。通过查看浏览器上所有站点cookie内容,可以在www.diaoyouyun.com 中找到cookie2。 (反思:**测试一的 cookie2 是否真的未被接受?)

访问http://diaoyouyun.com/bee/ 查看cookie发现只有cookie-1。(cookie4是子域名下的)

测试三 cookie2 在测试一是否真的未设置成功

cookie2 是path导致的无法查看到? 将path修改后再次走一遍测试一

cookie2.setPath("/");




经过验证,cookies2未设置成功

测试四 跨域请求无法设置cookie

以下请求是无法设置cookie的



上面的请求cookie1 2 3 4 都无法设置成功。

如果在浏览器直接访问http://api/diaoyouyun.com/bee/cookietest cookie1 和cookie4 可以添加成功

总结

子域名请求可以设置父域名下cookie。即:www.diaoyouyun.com的请求可以设置cookie (domain=diaoyouyun.com,所有diaoyouyun.com及其子域名下site都能查看)

父级域名的请求不能设置子域名的cookie。 即:http://diaoyouyun.com/** 的请求无法设置cookie(domain=www.diaoyouyun.com)。 简化记忆可以理解为,有子肯定存在父,反过来就不成立了。

跨域的请求是无法成功设置cookie的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cookie 浏览器 Domain