您的位置:首页 > 移动开发

WebView设置Cookie

2017-08-21 20:21 148 查看

HTTP Cookie

HTTP Cookie(也叫Web cookie或者浏览器Cookie)是服务器发送到用户浏览器并保存在浏览器上的一块数据,它会在浏览器下一次发起请求时被携带并发送到服务器上。比较经典的,可以它用来确定两次请求是否来自于同一个浏览器,从而能够确认和保持用户的登录状态。Cookie的使用使得基于无状态的HTTP协议上记录稳定的状态信息成为了可能。

格式

从概念上我们不难发现HTTP Cookie是一种需要服务端和客户端相互配合才能发挥作用的技术。

服务器使用Set-Cookie响应头部向用户代理(一般指浏览器)发送Cookie信息。一个简单的Cookie可能像这样:

Set-Cookie: <cookie名称>=<cookie值>


服务器告诉客户端要保存Cookie信息(服务端程序可以是PHP、Node.js、Python或者Ruby on Rails等语言写的), 响应的数据里面应该包含Set-Cookie头,浏览器收到之后会将Cookie保存。

HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry
[页面内容]


现在,对该服务器发起的每一次新的请求,浏览器都会将之前保存的Cookie信息通过Cookie请求头发送给服务器。

GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry


Set-Cookie语法大全

下面的代码展示了Set-Cookie会使用到的所有参数, 参数含义见https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie

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>; HttpOnly

Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Strict
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Lax

// Multiple directives are also possible, for example:
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly


注意事项

HttpOnly 可选

设置了 HttpOnly 属性的 cookie 不能使用 JavaScript 经由 Document.cookie 属性、XMLHttpRequest 和 Request APIs 进行访问,以防范跨站脚本攻击(XSS)

第三方cookie

默认情况下,Internet Explorer只允许第三方cookie在P3P“CP”(紧凑策略)字段的陪同下进行, 参见https://grack.com/blog/2010/01/06/3rd-party-cookies-dom-storage-and-privacy/https://en.wikipedia.org/wiki/HTTP_cookie

Android中通过WebView设置Cookie

CookieManager cookieManager = CookieManager.getInstance();
// cookie是一个格式正确拼接好的cookie字符串,
//如id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
cookieManager.setCookie(url, cookie);


本文内容基本摘抄自https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies,记录一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: