{"id":13647324,"url":"https://github.com/charleslo1/weapp-cookie","last_synced_at":"2025-05-16T08:02:55.180Z","repository":{"id":30053485,"uuid":"123783997","full_name":"charleslo1/weapp-cookie","owner":"charleslo1","description":"一行代码让微信、头条、百度、支付宝小程序支持 cookie，兼容 uni-app 🍪🚀 One line of code allows weapp to support cookie（wx weixin wxapp cookie）","archived":false,"fork":false,"pushed_at":"2024-04-28T03:30:19.000Z","size":999,"stargazers_count":836,"open_issues_count":22,"forks_count":99,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-09T16:48:13.073Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/charleslo1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-04T11:56:21.000Z","updated_at":"2025-05-06T08:10:12.000Z","dependencies_parsed_at":"2024-08-02T01:26:31.839Z","dependency_job_id":"a5c1f728-3041-489d-b5ff-10c3998a558d","html_url":"https://github.com/charleslo1/weapp-cookie","commit_stats":{"total_commits":74,"total_committers":4,"mean_commits":18.5,"dds":0.3513513513513513,"last_synced_commit":"aa1dcceded5674946049e9aae159a1e374259a78"},"previous_names":["charleslo1/weapp-cookie-shim"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charleslo1%2Fweapp-cookie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charleslo1%2Fweapp-cookie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charleslo1%2Fweapp-cookie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charleslo1%2Fweapp-cookie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charleslo1","download_url":"https://codeload.github.com/charleslo1/weapp-cookie/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254493381,"owners_count":22080126,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:03:29.554Z","updated_at":"2025-05-16T08:02:55.162Z","avatar_url":"https://github.com/charleslo1.png","language":"JavaScript","readme":"# weapp-cookie\n\u003e 一行代码让微信、头条、百度、支付宝小程序支持 cookie，兼容 uni-app\n\n![weapp-cookie](./assets/weapp-cookie.png)\n\n# Intro\n小程序原生的 request 网络请求接口并不支持传统的 Cookie，但有时候我们现有的后端接口确于依赖 Cookie（比如服务器用户登录态），这个库可用一行代码为你的小程序实现 Cookie 机制，以保证基于 cookie 的服务会话不会失效，与 web 端共用会话机制\n\n# Featrues\n- [x] 一行代码让小程序支持 cookie\n- [x] 可使用 api 获取、设置 cookie\n- [x] 支持 domain/path 作用域\n\n# Install\n\n``` sh\nnpm install weapp-cookie --save\n\n# 将 npm 包复制到 vendor 文件夹，避免小程序可能不能找到文件（Tips：支持npm包的开发环境无需此步）\ncp -rf ./node_modules/ ./vendor/\n```\n\n# Usage\n以微信小程序为例，在小程序根目录的 app.js 一行代码引入即可\n\n``` js\n// app.js\nimport './vendor/weapp-cookie/dist/weapp-cookie'\n\n// tips: 使用 uni-app/wepy/mpvue 等支持npm包的环境可以直接在入口 js 引入 weapp-cookie 模块\n// import 'weapp-cookie'\n\nApp({\n    onLaunch: function () { }\n    // ...\n})\n```\n\n原来的 wx.request 调用方式保持不变，引入后 weapp-cookie 会在底层自动代理 wx.request 的接口访问，以支持 cookie 存储和发送\n\n``` js\n// pages/home/index.js\n\nPage({\n    onLoad: function () {\n        wx.request({\n            url: 'https://example.com/login',\n            data: {\n                username: 'admin',\n                password: '123456'\n            },\n            success: function (res) {\n                /*\n                 * 接口调用成功后 weapp-cookie 会自动保存后端发送的所有Cookie（比如：SessionID）\n                 * 并在后续的所有请求中带上，以保证基于 cookie 的服务器会话机制不会失效，\n                 * 实现与 web 端共用会话机制（无需再手动维护 3rd_session_key） \n                 */\n            }\n        })\n    }\n})\n```\n\ncookie 操作可通过 api 调用\n\n``` js\nimport cookies from 'weapp-cookie'\n\n// 获取 cookie\nlet token = cookies.get('csrf_token', 'example.com')\n\n// 设置 cookie\nlet cookie = cookies.set('uid', 100, { domain: 'example.com' })\n\n// 删除 cookie\nlet isRemoved = cookies.remove('uid', 'example.com')\n\n// 判断是否存在 cookie\nlet hasToken = cookies.has('uid', 'example.com')\n\n// ... 详情请参考 Api\n\n```\n\n使用和配置别名：由于微信小程序的安全机制，[在小程序插件环境下 wx.request 不允许被重写](https://developers.weixin.qq.com/community/develop/doc/000cc0f0c70250ea51e6faa6156400)，所以需使用内置别名或自定义别名来支持 cookie 请求\n\n```\nimport cookies from 'weapp-cookie'\n\n// 使用内置别名\nwx.requestWithCookie({\n    url: 'https://example.com/user/current',\n    success: function (res) {\n        console.log(res)\n    }\n})\n\n// 配置自定义别名\ncookies.config({ requestAlias: 'requestx' })\n\n// 使用自定义别名\nwx.requestx({\n    url: 'https://example.com/user/current',\n    success: function (res) {\n        console.log(res)\n    }\n})\n```\n\n# Api\n\n## CookieStore\n``` js\nimport cookies from 'weapp-cookie'\n\n/**\n* 获取 cookie 值\n* @param {String} name       cookie 名称\n* @param {String} [domain]   指定域名（可选）\n* @return {String}           cookie 值\n*/\ncookies.get(String name, String domain)\n\n/**\n* 设置 cookie\n* @param {String}  name              cookie 名称\n* @param {String}  value             cookie 值\n* @param {Object}  options           cookie 选项\n* @param {String}  options.domain    设置域名\n* @param {String}  [options.path]      \n* @param {Date}    [options.expires]\n* @param {Number}  [options.maxAge]\n* @param {Boolean} [options.httpOnly]\n* @return {Cookie}           cookie 对象\n*/\ncookies.set(String name, String value, Object options)\n\n/**\n* 是否存在某个 cookie\n* @param  {String}  name       cookie 名称\n* @param  {String}  [domain]   指定域名（可选，不指定则任意域名包含名称为 name 的 cokkie 即为存在）\n* @return {Boolean}            是否存在\n*/\ncookies.has(String name, String domain)\n\n/**\n* 删除 cookie\n* @param  {Array}  name      cookie 键\n* @param  {String} [domain]  指定域名（可选，不指定则删除所有域名中名称为 name 的 cookie）\n* @return {Boolean}          是否删除成功\n*/\ncookies.remove(String name, String domain)\n\n/**\n* 获取 cookie 对象\n* @param {String} name       cookie 名称\n* @param {String} [domain]   指定域名（可选）\n* @return {Cookie}           cookie 对象\n*/\ncookies.getCookie(String name, String domain)\n\n/**\n* 获取 cookies JSON对象\n* @param  {String} [domain]  指定域名（可选，不指定则获取包含所有域名的 cookie 值对象）\n* @return {Object}           cookie JSON对象\n*/\ncookies.getCookies(String domain)\n\n/**\n* 清除 cookie\n* @param  {String} [domain]  指定域名（可选，不指定则清除所有域名 cookie）\n* @return {Boolean}          是否清除成功\n*/\ncookies.clearCookies (domain)\n\n/**\n* 获取所有存储的域名和 cookies 结构\n* @return {Object}   obj   结构JSON对象\n*/\ncookies.dir(domain)\n\n```\n\n## Cookie\n``` js\nimport cookies from 'weapp-cookie'\n\n// 获取 cookie 对象\nlet cookie = cookies.getCookie('uuid', 'example.com')\n\n// ===== cookie 属性 =====\ncookie.name:        String\ncookie.value:       String\ncookie.domain:      String\ncookie.path:        String\ncookie.expires:     Date\ncookie.maxAge:      Number\ncookie.httpOnly:    Boolean\n\n// ===== cookie 方法 =====\n\n/**\n * 验证 cookie 是否过期\n * @return {Boolean} 是否过期\n */\ncookie.isExpired()\n\n/**\n * 验证 cookie 是否可持久化\n * @return {Boolean} 是否可持久化\n */\ncookie.isPersistence()\n\n```\n\n\n![star](https://user-gold-cdn.xitu.io/2018/7/24/164ca9c0e943dcd7?w=240\u0026h=240\u0026f=png\u0026s=41877)\n\n如果对你有用，欢迎 star ^_^\n\n","funding_links":[],"categories":["JavaScript","组件"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharleslo1%2Fweapp-cookie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharleslo1%2Fweapp-cookie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharleslo1%2Fweapp-cookie/lists"}