Cookie safari bugs
- 因为 mac os(safari,iphone(h5),ipad 等) 安全策略的问题,在设置安全 cookie 的时候,在验证图形验证码的时候,会出现储存不了 cookie 的情况,以至于后端接口验证不能通过。
- support.apple.com/zh-cn/guide…
解决方案
接口使用无 cookie 方式传递,在获取图形验证码的时候,约定一个参数。供验证验证码的时候使用。
cookie 常识
什么是 HTTP Cookie
HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。
Cookie主要用于以下三个方面:
- 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为等)
cookie 的作用域
-
Domain 和 Path 标识定义了Cookie的作用域:即Cookie应该发送给哪些URL。
-
Domain 标识指定了哪些主机可以接受Cookie。如果不指定,默认为当前文档的主机(不包含子域名)。如果指定了Domain,则一般包含子域名。
例如,如果设置 Domain=mozilla.org,则Cookie也包含在子域名中(如developer.mozilla.org)。
Path 标识指定了主机下的哪些路径可以接受Cookie(该URL路径必须存在于请求URL中)。以字符 %x2F ("/") 作为路径分隔符,子路径也会被匹配。
例如,设置 Path=/docs,则以下地址都会匹配:
/docs
/docs/Web/
/docs/Web/HTTP
复制代码
服务端怎么设置和创建的 Cookie
- 创建Cookie节
当服务器收到HTTP请求时,服务器可以在响应头里面添加一个Set-Cookie选项。浏览器收到响应后通常会保存下Cookie,之后对该服务器每一次请求中都通过Cookie请求头部将Cookie信息发送给服务器。另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。
Set-Cookie响应头部和Cookie请求头部节 服务器使用Set-Cookie响应头部向用户代理(一般是浏览器)发送Cookie信息。一个简单的Cookie可能像这样:
Set-Cookie: <cookie名>=<cookie值>
复制代码
set-cookie
- 响应首部 Set-Cookie 被用来由服务器端向客户端发送 cookie。
服务器通过该头部告知客户端保存Cookie信息。
chrome 的储存器
存储查看器使你能够查看网页使用的多种存储类型。如今,它能够查看如下存储类型:
Cache
缓存 — 使用缓存API
创建的任何DOM
缓存Cookies
— 所有页面创建的cookies
或页面中任何的iframes
。还列出了作为网络呼叫响应的一部分创建的Cookie
,但仅适用于工具打开时发生的响应IndexedDB
— 所有页面创建的IndexedDB或或页面中任何的-IndexedDB
。其对象存储以及存储在这些对象库中的项目。 本地存储— 所有页面创建的本地存储或页面中任何的iframes
。Session存储
—所有页面创建的Session
或页面中任何的iframes
。
Cookies 节点
当你从存储树中选择Cookies存储类型的一个源时,会在表格小部件中列出该cookies的所有源。cookies表有以下列:
- Name— cookie的名称
- Path — cookie的路径属性
- Domain — cookie的域
- Expires on — cookie过期时间,如果cookie是session, 此列的值将为session
- Last accessed on — 上次读取cookies的时间
- Created on — cookie创建时间
- Value — cookie的值
- HostOnly — 这个cookie是不是一个域的cookie,如果是,域名以“.”为开头
- Secure — cookie是不是安全的
- HttpOnly — cookie是不是 HTTP only 同一站点 — 这个cookie是同一站点的cookie吗? 相同站点cookie允许服务器通过断言特定cookie应仅与同一可注册域发起的请求一起发送来减轻CSRF和信息泄漏攻击的风险。