Cookie中的几个概念
1. Domain
Domain表示Cookie所在的域(如:www.baidu.com),对于Cookie的访问是不能跨域的(如:我们无法在www.baidu.com下访问www.google.com中的Cookie),但当前域中的cookie可以在子域中访问,反之则不行;
2. Path
Path表示Cookie所在路径(或者说是目录),我们可以访问本目录及其上级目录(所有的上级目录)中的Cookie,但不能访问子目录中的Cookie。对于相同目录中的Cookie,多次赋值则后面的值会覆盖前面的值。对于不同目录下的同名Cookie的值则互不影响。
在ASP.NET中,Cookie的路径默认是"/",即根目录:
在Chrome浏览器中可以通过开发者工具来查看Cookie:
3. 同源策略限制
Cookie受同源策略影响相对较弱,只要发送请求方所在域与Cookie的Domain值相同即可将cookie发送至服务器端,无需考虑协议和端口号。如:
home.cnblogs.com/u/Cwj-XFH/,home.cnblogs.com为博客园的二级域名,/u/Cwj-XFH/为访问路径。
服务器无法将cookie的Domain值设置与当前域不兼容(如,一级域名和二级域名可以理解为兼容)的值。如:
在www.a.com中设置cookie的Domain值为www.b.com,则默认情况下浏览器不会存储该cookie。
4. 第三方Cookie
若cookie的域和当前页面的域不同或不兼容的cookie称为第三方cookie,反之则成为第一方cookie。
第三方cookie多用于浏览记录追踪和广告投放,可在浏览器设置中禁用第三方cookie。
5. 其它
服务器可以设置cookie的各种属性,如名称,值,过期时间等等。但具体的存储是在客户端,过期时间也以客户端为准而非服务器。一句话:服务器下命令,客户端干活。
Cookie不可跨浏览器访问,如chrome和IE,但同一台计算机上打开两个chrome浏览器则不存在该问题;
Cookie不可跨域访问,见第3条。
浏览器对于各站点存放的cookie数量及大小均有限制;
敏感信息或重要信息不推荐放到cookie中,警惕CSRF攻击;
6. 推荐阅读