Cookie相关

1,基础

1)Cookie在javax.servlet.http.Cookie下,一般由服务端来创建,用于在客户端保存数据。
2)正常的cookie只能由一个应用来使用,在同一tomcat服务器下(webapps中),共享cookie需要使用cookie.setPath("/")

//创建cookie,name, value
Cookie cookie = new Cookie("sessionId", UUID.randomUUID().toString().replace("-", ""));
cookie.setMaxAge(3600 * 24 * 7);//有效期,单位s
cookie.setHttpOnly(true);//cookie的安全策略,true则无法使用js获取cookie。eg:document.cookie将无法获取服务器端设置的cookie对象。
cookie.setPath("/");//用于同一服务器共享cookie。
cookie.setDomain(".oldqi.top");// 顶级域名中设置cookie,子域名下都可以获取cookie,不设置则使用当前域。
cookie.setComment("describe the usage of the cookie");
//domain和path据定了这些cookie可以被哪些页面共享。

response.addCookie(cookie);//将cookie写入响应体中。

3)浏览器收到设置cookie的response。(Set-cookie的响应头)

image.png

image.png

image.png

4)下次请求会将本域名下的cookie都以请求头header的形式传递过去。( 从浏览器传到后台的只有cookie的name和value,所以使用cookie.getPath(),cookie.getDomain都为空)
删除cookie时, cookie.setMaxAge(0); cookie.setDomain(domain);cookie.setPath(path);都必须设置。
Cookie相关_第1张图片
image.png

5)domian和path简介
请求url http://local.api.com/api/server/add_test_cookie

  1. 不设置path,则默认会保存在/api/server下。
  2. 设置path为/,则在本域下的所有请求都会带着该cookie。
  3. 不能设置成其他path下的cookie,cookie.setPath("/api/v3"); 会将set-Cookie响应头返回,但是不能设置成功。
  4. 不能设置其他域下的cookie,可以设置成根域名,不设置默认为当前请求的domain。(cookie.setDomain("baidu.com"))
  5. 当访问一个uri,会将当前(/api/server/add_test_cookie),以及上层path(/api/server || /api), 本域名(local.api.com)以及根域名(.api.com)下的cookie都带过去。


    Cookie相关_第2张图片
    image.png

2,cookie的模拟和修改

1)请求接口中增加cookie头,免登陆。
request.addHeader("Cookie", "sessionId=63ffb961-4f8e-47bc-a36f-ae40e4f4c5a1");
2)使用postman interceptor插件。(直接使用postman,chrome会限制不允许带cookie发出请求)
3)使用EditThisCookie插件,编辑cookie。
EditThisCookie是一个cookie管理器。您可以添加,删除,编辑,搜索,锁定和屏蔽cookies!


Cookie相关_第3张图片
image.png

4)使用javascript前端控制台修改cookie。

document.cookie可以获取和设置多个cookie。
document.cookie="uname=hzq"


Cookie相关_第4张图片
image.png

document.cookie="uname=hzq;domain=.duobeiyun.com;path=/"


image.png

3,cookie过大的问题

Cookie相关_第5张图片
image.png

Cookie相关_第6张图片
image.png

4,chrome console控制台

1)shift + enter可以进行多行js操作。

2)
Cookie相关_第7张图片
image.png

5,其他

1)每个cookie size limit在4KB左右。(4000多个字节,每个domain下可以有多个cookie)

2)浏览器对cookie个数和大小的限制。
Cookie相关_第8张图片
image.png

3)格式化显示压缩过的js和css
Cookie相关_第9张图片
image.png

Cookie相关_第10张图片
image.png

你可能感兴趣的:(Cookie相关)