目前使用go 的gin 框架写了一个http portal 服务器,
1、目前为了调试方便,http服务器回报时会设置cookie 比如设置cookie:hostid=1;MD5=wewq8wqe等作为trace id 方便后续跟踪log
2、在设置cookie的时候遇到了,一些问题,比如设置cookie时,希望下次请求带上cookie,则需要设置cookie 的Path字段
3、还需要设置cache-control ?
4、对于http不需要设置secure,否则浏览器会出现一个感叹号!,以及浏览器再次发出请求时不会带上cookie
Set-Cookie
响应标头 Set-Cookie
被用来由服务器端向用户代理发送 cookie,所以用户代理可在后续的请求中将其发送回服务器。服务器要发送多个 cookie,则应该在同一响应中发送多个 Set-Cookie
标头。
一些 <cookie-name>
具有特殊的语义:
__Secure-
前缀:以 __Secure-
为前缀的 cookie(其中连接符是前缀的一部分),必须与 secure
属性一同设置,同时必须应用于安全页面(即使用 HTTPS 访问的页面)。
__Host-
前缀:以 __Host-
为前缀的 cookie,必须与 secure
属性一同设置,必须应用于安全页面(即使用 HTTPS 访问的页面),也禁止设置 domain 属性(也就不会发送给子域),同时 path 属性的值必须为 /
。
Path=<path-value>
可选
指定一个 URL 路径,这个路径必须出现在要请求的资源的路径中才可以发送 Cookie
标头。
字符 /
可以解释为文件目录分隔符,此目录的下级目录也满足匹配的条件(例如,如果 path=/docs
,那么
/docs
、/docs/
、/docs/Web/
和/docs/Web/HTTP
都满足匹配条件。/
、/docsets
或者/fr/docs
则不满足匹配条件。
HttpOnly
可选
用于阻止 JavaScript 通过 Document.cookie
属性访问 cookie。注意,设置了 HttpOnly
的 cookie 在 JavaScript 初始化的请求中仍然会被发送。例如,调用 XMLHttpRequest.send()
或 fetch()
。其用于防范跨站脚本攻击(XSS)
SameSite=<samesite-value>
可选
允许服务器设定一则 cookie 不随着跨站请求一起发送,这样可以在一定程度上防范跨站请求伪造攻击(CSRF)。
可选的属性值有:
Strict
- : 这意味浏览器仅对同一站点的请求发送
cookie
,即请求来自设置 cookie 的站点。如果请求来自不同的域或协议(即使是相同域),则携带有SameSite=Strict
属性的 cookie 将不会被发送。
- : 这意味浏览器仅对同一站点的请求发送
Lax
- : 这意味着 cookie 不会在跨站请求中被发送,如:加载图像或 frame 的请求。但 cookie 在用户从外部站点导航到源站时,cookie 也将被发送(例如,跟随一个链接)。这是
SameSite
属性未被设置时的默认行为。
- : 这意味着 cookie 不会在跨站请求中被发送,如:加载图像或 frame 的请求。但 cookie 在用户从外部站点导航到源站时,cookie 也将被发送(例如,跟随一个链接)。这是
None
- : 这意味着浏览器会在跨站和同站请求中均发送 cookie。在设置这一属性值时,必须同时设置
Secure
属性,就像这样:SameSite=None; Secure
。
- : 这意味着浏览器会在跨站和同站请求中均发送 cookie。在设置这一属性值时,必须同时设置
Cookie 前缀
名称中包含 __Secure-
或 __Host-
前缀的 cookie,只可以应用在使用了安全连接(HTTPS)的域中,需要同时设置 secure
属性。
另外,假如 cookie 以 __Host-
为前缀,那么 path 属性的值必须为 /
(表示整个站点),且不能含有 Domain
属性。
// 当响应来自于一个安全域(HTTPS)的时候,二者都可以被客户端接受 Set-Cookie: __Secure-ID=123; Secure; Domain=example.com Set-Cookie: __Host-ID=123; Secure; Path=/ // 缺少 Secure 指令,会被拒绝 Set-Cookie: __Secure-id=1 // 缺少 Path=/ 指令,会被拒绝 Set-Cookie: __Host-id=1; Secure // 由于设置了 domain 属性,会被拒绝 Set-Cookie: __Host-id=1; Secure; Path=/; domain=example.com
会话期 cookie
会话期 cookie 将会在客户端关闭时被移除。会话期 cookie 不设置 Expires
或 Max-Age
属性。
Set-Cookie: sessionId=38afes7a8
持久化 cookie
持久化 cookie 不会在客户端关闭时失效,而是在特定的日期(Expires
)或者经过一段特定的时间之后(Max-Age
)才会失效。
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT Set-Cookie: id=a3fWa; Max-Age=2592000
标签:__,Set,http,Secure,portal,设置,Cookie,go,cookie From: https://www.cnblogs.com/codestack/p/17392644.html