Chrome 浏览器插件 cookies API 解析

Chrome.cookie

前端开发肯定少不了和 cookie 打交道,此文较详细的介绍下 chrome.cookieAPI 以及在 popup、service worker、content 中如何获取的

一、权限(Permissions)

如果需使用 Cookie API,需要在 manifest.json 文件中添加权限(Permissions)和主机权限(host_permissions)字段

"permissions": [    "cookies"
],
"host_permissions": ["https://*.lkcoffee.com/*"
]

比如,我需要获取 domain.lkcoffee.comcookie,就需要在 host_permissions 中进行 host 的配置

二、类型(Types

1. Cookie

表示关于 HTTP Cookie 的信息。

属性
  • domain: string
    • cookiedomain
  • expirationDate: number 可选
    • Cookie 的有效期
  • hostOnly: boolean
    • host-only 时为 true
  • httpOnly: boolean
    • httpOnly 时为 true
  • name: string
    • 名称
  • partitionKey: CookiePartitionKey 可选
    • 用于通过分区属性读取或修改 Cookie 的分区键。
  • path: string
    • 路径
  • sameSite: SameSiteStatus
    • 同网站状态。
  • secure: boolean
    • Secure
  • session: booean
    • 是否是会话
  • storeId: string
    • 包含此 CookieCookie 存储区的 ID,如 getAllCookieStores() 中所提供。
  • value: string
    • cookie

2. CookieDetails

用于标识 Cookie 的详细信息。

属性
  • name: string
    • 要访问的 Cookie 的名称。
  • partitionKey: CookiePartitionKey 可选
    • 用于通过分区属性读取或修改 Cookie 的分区键。
  • storeId: string 可选
    • 要在其中查找 CookieCookie 存储区的 ID
  • url: string
    • 与要访问的 Cookie 相关联的网址。

3. CookiePartitionKey

表示分区 Cookie 的分区键。

属性
  • topLevelSite: string 可选
    • 提供分区 Cookietop-level

4. CookieStore

表示浏览器中的 Cookie 存储

属性
  • id: string
    • Cookie 存储区的唯一标识符。
  • tabIds: number[]
    • 共享此 Cookie 存储区的所有浏览器标签页的标识符。

5. OnChangedCause

Cookie 发生更改的根本原因。

如果 Cookie 已插入或通过显式调用 chrome.cookies.remove 被移除,为 explicit。如果 Cookie 是因过期而自动移除的,为 expired。如果 Cookie 因被已过期的失效日期覆盖而被移除,为 expired_overwrite。如果 Cookie 因垃圾回收而自动移除,为 evicted。如果 Cookieset 调用覆盖而自动移除,为 overwrite

枚举
  • evicted
  • expired
  • explicit
  • expired_overwrite
  • overwrite

6. SameSiteStatus

CookieSameSite 状态。

no_restrictionSameSite=NonelaxSameSite=LaxstrictSameSite=Strictunspecified 为没有设置 SameSite 属性的 Cookie

枚举
  • no_restrictionSameSite=None
  • laxSameSite=Lax
  • strictSameSite=Strict
  • unspecified:没有设置 SameSite

三、方法(Methods

1. get()

检索单个 Cookie 的相关信息。如果指定网址存在多个同名的 Cookie,则返回路径最长的 Cookie。对于具有相同路径长度的 Cookie,系统将返回创建时间最早的 Cookie

1.1 示例
chrome.cookies.get(details:CookieDetails,callback?:function,
)
1.2 参数
  • details: CookieDetails
  • callback: function 可选
    • (cookie?: Cookie)=>void
1.3 返回
  • Promise<Cookie|undefined>

2. getAll()

从单个 Cookie 存储区中检索符合指定信息的所有 Cookie。返回的 Cookie 将进行排序,路径最长的 Cookie 排在最前面。如果多个 Cookie 具有相同的路径长度,创建时间最早的 Cookie 会排在最前面。此方法仅检索扩展程序拥有主机权限的网域的 Cookie。

2.1 示例
chrome.cookies.getAll(details:object,callback?:function,
)
2.2 参数
  • details: object
    • domain: string 可选
    • name: string 可选
    • partitionKey: CookiePartitionKey 可选
      • 用于通过分区属性读取或修改 Cookie 的分区键。
    • path: string 可选
    • secure: boolean 可选
    • session: boolean 可选
    • storeId: string 可选
    • url: string 可选
  • callback: function 可选
    • (cookies:Cookie[])=>void
2.3 返回
  • Promise<Cookie[]>

3. getAllCookieStores()

列出所有现有的 Cookie 存储。

3.1 示例
chrome.cookies.getAllCookieStores(callback?:function,
)
3.2参数
  • callback: function 可选
    • (cookieStores: CookieStore[])=>void
3.3 返回
  • Promise<CookieStore[]>

4. remove()

按名称删除 Cookie。

4.1 示例
chrome.cookies.remove(details:CookieDetails,callback?:function,
)
4.2 参数
  • details: CookieDetails
    • name: string
    • partitionKey: CookiePartitionKey 可选
      • 用于通过分区属性读取或修改 Cookie 的分区键。
    • storeId: string
    • url: string
  • callback: function 可选
    • (details?:object)=>void
4.3 返回
  • Promise<object|undefined>

5. set()

使用指定的 Cookie 数据设置 Cookie;可能会覆盖等效的 Cookie(如果存在)。

5.1 示例
chrome.cookies.set(details:object,callback?:function,
)
5.2 参数
  • details: object
    • domain: string 可选
      • cookiedomain
    • expirationDate: number 可选
      • Cookie 的有效期
    • httpOnly: boolean 可选
      • httpOnly 时为 true
    • name: string 可选
      • 名称
    • partitionKey: CookiePartitionKey 可选
      • 用于通过分区属性读取或修改 Cookie 的分区键。
    • path: string 可选
      • 路径
    • sameSite: SameSiteStatus 可选
      • 同网站状态。
    • secure: boolean 可选
      • Secure
    • storeId: string 可选
      • 包含此 CookieCookie 存储区的 ID,如 getAllCookieStores() 中所提供。
    • url: string
    • value: string 可选
      • cookie
  • callback: function 可选
    • (cookie?:Cookie)=>void
5.3返回
  • Promise<Cookie|undefined>

四、Action Popup 模块获取 Cookies

// 根据 domain 获取
const cookies = await chrome.cookies.getAll({ domain:  '.lkcoffee.com'})
console.log('popup cookies--->', cookies)
// 根据 url 获取
const urlCookies = await chrome.cookies.getAll({ url: url })
console.log("popup urlCookies", urlCookies);

image.png

五、Background Service Worker 模块获取 Cookies

const cookies = await chrome.cookies.getAll({ domain:  '.lkcoffee.com'})
console.log('service worker cookies--->', cookies)

image.png

六、Content Scripts 模块获取 Cookies

因为 Content Scripts 是注入当前页面的,所以和 web 一样获取即可

document.cookie

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信驰达科技参与《汽车玻璃集成UWB数字钥匙发展研究白皮书》编制工作

为进一步探索汽车数字钥匙技术路线及开发思路&#xff0c;中国智能网联汽车产业创新联盟&#xff08;CAICV&#xff09;、福耀玻璃工业集团股份有限公司联合发起了《汽车玻璃集成UWB数字钥匙发展研究白皮书》研究工作。 2023年12月20日&#xff0c;由中国智能网联汽车产业创新…

PLSQL 把多个字段转为json格式

PLSQL 把多个字段转为json格式 sql Select cc.bm, cc.xm, json_arrayagg(cc.hb) jgFrom (Select aa.bm, aa.xm, json_object(aa.ksbh, aa.wjmc) hbFrom (Select 001 bm, 老六 xm, 0001 ksbh, 文具盒 wjmcFrom dual tUnion AllSelect 001 bm, 老六 xm, 0002 ksbh, 毛笔 wjmcFr…

【C语言】详解文件与文件操作

1.什么是文件 文件是记录在外存上的相关信息的命名组合&#xff0c;但是在程序设计中&#xff0c;我们⼀般谈的文件有两种&#xff1a;程序文件、数据文件&#xff08;从文件功能的角度来分类的&#xff09;。 1.1程序文件 程序文件包括&#xff1a; 源程序文件 &#xff0…

AI嵌入式K210项目(9)-DMA

文章目录 前言一、DMA是什么&#xff1f;二、K210的DMA实验过程总结 前言 本章我们来介绍K210的DMA控制器&#xff0c;大家应该都知道在大数据量传输时&#xff0c;如果CPU全程参与&#xff0c;是非常浪费资源的&#xff0c;于是芯片内置了DMAC用做传输控制&#xff0c;CPU仅仅…

Vue面试之v-if与v-show的区别

Vue面试之v-if与v-show的区别 DOM渲染初始渲染性能切换开销标签配合源码实现 最近在整理一些前端面试中经常被问到的问题&#xff0c;分为vue相关、react相关、js相关、react相关等等专题&#xff0c;可持续关注后续内容&#xff0c;会不断进行整理~ 作为Vue中两种条件性渲染元…

C#,入门教程(17)——条件语句(if-else)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(16)——可变数据类型&#xff08;var&#xff09;的基础知识与使用禁忌https://blog.csdn.net/beijinghorn/article/details/124032216 程序的核心是逻辑。 逻辑的核心是布尔条件表达式。 逻辑的主要体现形式之一是 if-else 语句…

上位机编程:ASCII码精讲

一 ASCII码介绍&#xff1a; ASCII&#xff08;American Standard Code for Information Interchange&#xff09;码是一种使用数字来表示字符的编码标准。它是一种字符编码&#xff0c;将常见的字符映射到数字&#xff0c;以便计算机能够理解和处理文本数据。 ASCII码最初是为…

十大排序算法模板

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

本地一键部署grafana+prometheus

本地k8s集群内一键部署grafanaprometheus 说明&#xff1a; 此一键部署grafanaPrometheus已包含&#xff1a; victoria-metrics 存储prometheus-servergrafanaprometheus-kube-state-metricsprometheus-node-exporterblackbox-exporter grafana内已导入基础的dashboard【7个…

户外火光如何玩转?智能酒精壁炉安全使用攻略大揭秘!

在户外使用智能酒精壁炉是一个别致而令人惬意的选择&#xff0c;但在享受户外炉火带来的温馨时&#xff0c;也需要注意一些安全和使用细节。下面将介绍智能酒精壁炉在户外使用需要注意的事项。 智能酒精壁炉需放置在平坦、通风的户外场地&#xff0c;远离易燃物体&#xff0c;确…

Maven 搭建私服

一、Maven 私服简介 1.1 私服简介 Maven 私服是一种特殊的 Maven 远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 当然也并不是说私服只能建立在局域网&#xff0c;也有很多公…

网络部署实战具体学习内容总结

网络部署实战具体学习内容总结 &#x1f4bb;网络部署实战课程通常旨在教授学生如何规划、配置、维护和优化计算机网络。这些课程涵盖了广泛的主题&#xff0c;以确保学生具备网络部署和管理所需的技能。 网络部署实战课程具体学习内容&#x1f447; 1️⃣网络架构设计及网络原…

第一个Python程序_获取网页 HTML 信息[Python爬虫学习笔记]

使用 Python 内置的 urllib 库获取网页的 html 信息。注意&#xff0c;urllib 库属于 Python 的标准库模块&#xff0c;无须单独安装&#xff0c;它是 Python 爬虫的常用模块。 获取网页 HTML 信息 1) 获取响应对象 向百度&#xff08;http://www.baidu.com/&#xff09;发起…

九州金榜|孩子厌学是家庭教育原因还是学校教育原因?

孩子厌学&#xff0c;这是一个让所有家长的头疼的问题&#xff0c;尤其在看到别人家孩子是学霸的时候&#xff0c;就更会有种莫名其妙的伤感&#xff0c;然后回想自己的孩子&#xff0c;仿佛全都是缺点&#xff0c;家长要是有这种想法那就大错特错了&#xff0c;其实每个孩子都…

杨中科 .NETCORE EFCORE第七部分 一对一,多对多

一对一 一对一关系配置 1、builder.HasOne(o >o.Delivery).WithOne(d>d.Order).HasForeignKey(d>dOrderId); 2、测试插入和获取数据 示例 新建 Order 新建 Delivery DeliveryConfig OrderConfig 执行 迁移命令 查看数据库 测试数据插入 运行查看数据 多对多…

【Shell编程练习】编写 shell 脚本,打印 9*9 乘法表

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量&#xff0c;小于给定值时报警 猜大小 输入三个数并进行升序排序 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 系列文章目录编写 shell 脚本,打…

软件测试|如何使用selenium处理下拉框?

简介 下拉框是网页表单中常见的元素之一&#xff0c;通常用于选择不同的选项。对于我们的自动化测试工作来说&#xff0c;操作下拉框是我们经常需要处理的元素&#xff0c;selenium作为我们最常使用的web自动化测试框架&#xff0c;也是支持我们对下拉框进行操作的。本文我们就…

【问题+解决】axios/vue/element/echarts引入报错

缘由 笔者在html页面引用vue来快速实现页面&#xff1b;<head></head>中通过<script>src""></script>方法引入&#xff0c;开始引入&#xff0c;应用都是正常&#xff0c;后来用了也没问题&#xff1b;奇怪的是&#xff0c;前几天发现htm…

代码随想录算法训练营第6天 | 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和

哈希知识基础 文章链接&#xff1a;https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%93%88%E5%B8%8C%E8%A1%A8 242.有效的字母异位词 题目链接&#xff1a;https://leetcode.cn/problems/valid-anagram/description/…

Qt根据单价计算总价与进制转换

1.相关说明 二进制、十进制、十六进制间的相互转换 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete …