CapacitorCookies
Capacitor Cookies API 通过修补 document.cookie 以使用原生库来提供原生 Cookie 支持。它还提供了在特定 URL 下修改 Cookie 的方法。此插件已捆绑在 @capacitor/core 中。
配置
默认情况下,通过修补 document.cookie 以使用原生库的功能是禁用的。
如果你想启用此功能,请在 capacitor.config 文件中修改以下配置。
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
enabled | boolean | 启用 document.cookie 的修补,以使用原生库。 | false |
配置示例
在 capacitor.config.json 中:
{
"plugins": {
"CapacitorCookies": {
"enabled": true
}
}
}
在 capacitor.config.ts 中:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
CapacitorCookies: {
enabled: true,
},
},
};
export default config;
示例
import { CapacitorCookies } from '@capacitor/core';
const getCookies = () => {
return document.cookie;
};
const setCookie = () => {
document.cookie = key + '=' + value;
};
const setCapacitorCookie = async () => {
await CapacitorCookies.setCookie({
url: 'http://example.com',
key: 'language',
value: 'en',
});
};
const deleteCookie = async () => {
await CapacitorCookies.deleteCookie({
url: 'https://example.com',
key: 'language',
});
};
const clearCookiesOnUrl = async () => {
await CapacitorCookies.clearCookies({
url: 'https://example.com',
});
};
const clearAllCookies = async () => {
await CapacitorCookies.clearAllCookies();
};
iOS 上的第三方 Cookie
从 iOS 14 开始,默认情况下无法使用第三方 Cookie。为了在 iOS 上获得更好的 Cookie 支持,请将以下行添加到你的 Info.plist 文件中。最多可以添加 10 个域名。
<key>WKAppBoundDomains</key>
<array>
<string>www.mydomain.com</string>
<string>api.mydomain.com</string>
<string>www.myothercooldomain.com</string>
</array>
API
getCookies(...)
getCookies(options?: GetCookieOptions) => Promise<HttpCookieMap>
| 参数 | 类型 |
|---|---|
options | |
返回值:
Promise<HttpCookieMap>
setCookie(...)
setCookie(options: SetCookieOptions) => Promise<void>
向设备写入一个 Cookie。
| 参数 | 类型 |
|---|---|
options | |
deleteCookie(...)
deleteCookie(options: DeleteCookieOptions) => Promise<void>
从设备删除一个 Cookie。
| 参数 | 类型 |
|---|---|
options | |
clearCookies(...)
clearCookies(options: ClearCookieOptions) => Promise<void>
清除设备上给定 URL 的所有 Cookie。
| 参数 | 类型 |
|---|---|
options | |
clearAllCookies()
clearAllCookies() => Promise<void>
清除设备上的所有 Cookie。
接口
HttpCookieMap
HttpCookie
| 属性 | 类型 | 描述 |
|---|---|---|
url | string | Cookie 的 URL。 |
key | string | Cookie 的键。 |
value | string | Cookie 的值。 |
HttpCookieExtras
| 属性 | 类型 | 描述 |
|---|---|---|
path | string | 写入 Cookie 的路径。 |
expires | string | Cookie 的过期日期。 |
类型别名
GetCookieOptions
Omit<HttpCookie, 'key' | 'value'>
Omit
构造一个类型,该类型具有 T 的属性,但排除了 K 类型中的属性。
Pick<T, Exclude<keyof T, K>>
Pick
从 T 中,选取一组键在联合类型 K 中的属性。
{
[P in K]: T[P];
}
Exclude
从 T 中排除那些可分配给 U 的类型。
T extends U ? never : T
SetCookieOptions
HttpCookie & HttpCookieExtras
DeleteCookieOptions
Omit<HttpCookie, 'value'>
ClearCookieOptions
Omit<HttpCookie, 'key' | 'value'>