Titanium SDK 中的 Cookie 管理详解
概述
在移动应用开发中,Cookie 管理是网络通信的重要组成部分。Titanium SDK 提供了 Titanium.Network.Cookie
模块,用于在跨平台应用中高效地管理 Cookie。本文将深入解析这一模块的功能和使用方法。
Cookie 基础
Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器发起请求时被携带并发送到服务器上。在 Titanium SDK 中,Cookie 管理分为系统 Cookie 存储和 HTTP 客户端 Cookie 存储两部分。
创建 Cookie
要创建一个新的 Cookie 对象,需要使用 Titanium.Network.createCookie
方法:
var myCookie = Ti.Network.createCookie({
name: 'sessionID',
value: '123456789',
domain: 'example.com',
path: '/',
secure: true
});
Cookie 属性详解
核心属性
- name (String, 只读): Cookie 的名称,创建时必须指定
- value (String): Cookie 的值
- domain (String): Cookie 作用的域名
- path (String): Cookie 作用的路径,默认为 "/"
安全相关属性
- secure (Boolean): 是否仅通过安全连接传输,默认为 false
- httponly (Boolean): 是否仅用于 HTTP 传输
- iOS: 无法设置此属性
- Android: 设置为 true 时仅用于 HTTP/HTTPS 请求
有效期控制
- expiryDate (String, iOS/macOS): 过期时间,格式为 "yyyy-MM-ddTHH:mm:ss.SSS+0000"
- maxAge (Number, Android): 最大存活时间(秒)
其他属性
- comment (String): Cookie 的用途描述
- version (Number): Cookie 规范版本
- originalUrl (String, iOS/macOS): Cookie 的原始 URL
Cookie 验证
使用 isValid()
方法可以检查 Cookie 是否有效。一个有效的 Cookie 必须至少包含以下属性:
- name
- value
- path
- domain 或 originalUrl (仅 iOS)
if (myCookie.isValid()) {
console.log('Cookie 有效');
}
实际应用示例
1. 设置 WebView 的 Cookie
var webview = Ti.UI.createWebView({
url: 'https://example.com'
});
// 创建并添加 Cookie
var cookie = Ti.Network.createCookie({
name: 'user_token',
value: 'abc123',
domain: 'example.com',
path: '/'
});
Ti.Network.addHTTPCookie(cookie);
2. 获取所有 Cookie
var allCookies = Ti.Network.getAllHTTPCookies();
allCookies.forEach(function(cookie) {
console.log(cookie.name + ': ' + cookie.value);
});
3. 删除 Cookie
// 删除特定 Cookie
Ti.Network.removeHTTPCookie('example.com', '/', 'user_token');
// 删除所有 Cookie
Ti.Network.removeAllHTTPCookies();
平台差异注意事项
-
Android:
- 5.0.0 及以上版本使用
maxAge
而非expiryDate
- 可以设置
httponly
属性
- 5.0.0 及以上版本使用
-
iOS/macOS:
- 使用
expiryDate
控制过期时间 - 不能设置
httponly
属性 - 支持
originalUrl
属性
- 使用
最佳实践
- 敏感数据:避免在 Cookie 中存储敏感信息,即使设置了 secure 和 httponly 属性
- 有效期:合理设置 Cookie 的有效期,避免过长或过短
- 跨平台兼容:注意平台差异,必要时编写平台特定代码
- 性能考虑:大量 Cookie 可能影响请求性能,定期清理无用 Cookie
总结
Titanium SDK 的 Cookie 管理模块为开发者提供了跨平台的 Cookie 操作能力。通过理解其核心概念、属性差异和实际应用场景,开发者可以在应用中实现高效的会话管理和状态保持功能。记住始终考虑安全性和平台兼容性,确保应用在不同设备上都能正常工作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考