什么是cookie
由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的。Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。比如判断用户是否是第一次访问网站。
Cookie的处理分为:
服务器像客户端发送cookie
浏览器将cookie保存
之后每次http请求浏览器都会将cookie发送给服务器端
翻译一下由于cookie技术是将业务信息存储在客户端,在下次请求中传给服务端,如身份信息等。
发送cookie
服务端http响应头中setcookie字段
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: theme=light
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
客户端请求头中有cookie字段
GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: theme=light; sessionToken=abc123
cookie的属性:
属性 | 说明 |
---|---|
NAME=VALUE | 赋予cookie属性和值(必选项) |
expires=DATE | Cookie的有效期(不说明则默认浏览器关闭前为止) |
path=PATH | 将服务器上文件目录作为cookie的适用对象(若不指定则默认为文档所在的文件目录) |
domain=域名 | 作为cookie适用对象的域名(若不指定为创建cookie的域名) |
secure | 仅在HTTPS安全通信时才会发送cookie |
HttpOnly | 加以限制,使cookie不能被javascript脚本访问 |
查看cookie
以火狐为例,查看当前页面的cookie,进入开发者模式
也可以使用火狐的cookie插件cookiebro
跨域共享
如:www.hao.360.com
.com为1级域名,.360.com为二级域名,.hao.360.com为3级域名
我们想要将cookie值共享,需要将cookie的作用域修改为所需要的域名下。
如你想实现访问www.hao.360.com的cookie可以作用在www.huai.360.com域名,将cookie的domain的值.360.com即可实现跨二级域名共享。
java设置cookie
Cookie cookie = new Cookie(name, null);
cookie.setDomain(domain);
cookie.setPath(path);
cookie.setValue(value);
response.addCookie(cookie);
调试工具
推荐postman,火狐插件restclient
内容很简单,作为工作时的一点小积累,不积跬步无以至千里。多多加油!