本文主要是介绍Http 请求头Cookie,响应头Set-Cookie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- Cookie
- Set-Cookie
- 属性
- Example
Cookie
Http请求头
由服务器使用set-Cookie头发送,或者在Javascript中使用document.cookie设置
语法
Cookie: name=value; name2=value2; name3=value3
Set-Cookie
Http响应头
用于从服务器向用户代理发送cookie,然后浏览器会将数据设置给下次请求的Cookie请求头,返回服务器
。session功能的类似实现
可以设置多个Set-Cookie在相同的Http响应中
语法
Set-Cookie: <cookie-name>=<cookie-value>
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>
Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit>
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>
Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value>
Set-Cookie: <cookie-name>=<cookie-value>; Secure
Set-Cookie: <cookie-name>=<cookie-value>; HttpOnlySet-Cookie: <cookie-name>=<cookie-value>; SameSite=Strict
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Lax
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=None; Secure// Multiple attributes are also possible, for example:
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
属性
<cookie-name>=<cookie-value>
US-ASCII 字符, 除了control characters, spaces, 或tabs。还不能包括下面分分割符( ) < > @ , ; : \ " / [ ] ? = { }
Cookie名称开始的前缀是**__secure-时,必须要设置HTTPS的flagsecure
Cookie名称开始的前缀是__Host-**时,必须要设置HTTPS的flagsecure
,不能指定域,path必须是/
Expires=<date>
Cookie作为HTTP日期时间戳的最大生存期,参考Date对象
未设置的时候cookie变成了session cookie(session的实现)
,会话在客户端关闭时结束,session cookie将被删除。
许多浏览器有 session restore 功能,保存session cookie,下次使用的时候session cookie会被还原。
设置到期日期时,截止日期相对于正在设置cookie的客户端,而不是服务器。Max-Age=<number>
直到cookie过期的秒数。零或负数将立即过期cookie。如果两者都已到期,并且设置了Max-Age,则Max-Age优先Domain=<domain-value>
将cookie发送到的主机- 如果省略,默认为当前文档URL的主机,不包括子域
- 不允许多个主机/域值,但如果指定了域,则始终包括子域
Path=<path-value>
请求的URL中必须存在的路径,否则浏览器将不发送Cookie报头
正斜杠(/)字符被解释为目录分隔符,子目录也将匹配:对于path=/docs,/docs/web/,和/docs/web/HTTP都将匹配Secure
Cookie只在使用https:(本地主机除外)发出请求时才发送到服务器,因此更能抵抗中间人的攻击- 不要假设安全会阻止所有对cookie中敏感信息(会话密钥、登录详细信息等)的访问。带有此属性的cookie仍然可以通过访问客户端的硬盘来读取/修改,如果没有设置HttpOnly cookie属性,则可以从JavaScript读取/修改Cookie
- 不安全站点(http:)不能使用安全属性设置cookie
HttpOnly
设置了 HttpOnly 属性的 cookie 不能使用 JavaScript 经由 Document.cookie 属性、XMLHttpRequest 和 Request APIs 进行访问,以防范跨站脚本攻击(XSS)。请注意,使用HttpOnly创建的cookie仍将与JavaScript启动的请求一起发送。SameSite=<samesite-value>
控制cookie是否与跨源请求一起发送,从而提供一些防范跨站点请求伪造攻击(Csrf)的保护
属性值- Lax
Cookie不是在跨站点请求(如对加载图像或帧的调用)上发送的,而是在用户从外部站点导航到源站点时发送的。 - Strict
浏览器只为同一站点请求(即来自设置cookie的同一站点的请求)发送cookie。如果请求来自与当前URL不同的URL,则不会发送带有SameSite=Strength属性的cookie。 - None
浏览器发送带有跨站点请求和相同站点请求的cookie。当SameSite=None时,还必须设置安全属性!
- Lax
Example
Session cookie
Session cookies
are removed when the client shuts down. Cookies are session cookies if they don’t specify the Expires or Max-Age attributes.
Set-Cookie: id=sada78dad
这篇关于Http 请求头Cookie,响应头Set-Cookie的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!