{"id":13671940,"url":"https://github.com/expressjs/cookie-parser","last_synced_at":"2025-05-14T08:05:05.801Z","repository":{"id":14160467,"uuid":"16866357","full_name":"expressjs/cookie-parser","owner":"expressjs","description":"Parse HTTP request cookies","archived":false,"fork":false,"pushed_at":"2024-12-20T15:15:46.000Z","size":124,"stargazers_count":1996,"open_issues_count":21,"forks_count":222,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-05-07T07:11:13.197Z","etag":null,"topics":["cookie","expressjs","javascript","middleware","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"valhalla/tools","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/expressjs.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","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,"zenodo":null},"funding":{"open_collective":"express"}},"created_at":"2014-02-15T16:22:04.000Z","updated_at":"2025-05-04T21:08:42.000Z","dependencies_parsed_at":"2024-01-12T01:57:09.150Z","dependency_job_id":"3ae2a0f9-b6bb-4550-8c6d-70da389a5bef","html_url":"https://github.com/expressjs/cookie-parser","commit_stats":{"total_commits":258,"total_committers":17,"mean_commits":"15.176470588235293","dds":0.07751937984496127,"last_synced_commit":"429cfd4bcfa66f6578af890d83d5c88be1144245"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressjs%2Fcookie-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressjs%2Fcookie-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressjs%2Fcookie-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressjs%2Fcookie-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/expressjs","download_url":"https://codeload.github.com/expressjs/cookie-parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101588,"owners_count":22014907,"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":["cookie","expressjs","javascript","middleware","nodejs"],"created_at":"2024-08-02T09:01:22.496Z","updated_at":"2025-05-14T08:05:05.768Z","avatar_url":"https://github.com/expressjs.png","language":"JavaScript","readme":"# cookie-parser\n\n[![NPM Version][npm-version-image]][npm-url]\n[![NPM Downloads][npm-downloads-image]][npm-url]\n[![Build Status][ci-image]][ci-url]\n[![Test Coverage][coveralls-image]][coveralls-url]\n\nParse `Cookie` header and populate `req.cookies` with an object keyed by the\ncookie names. Optionally you may enable signed cookie support by passing a\n`secret` string, which assigns `req.secret` so it may be used by other\nmiddleware.\n\n## Installation\n\n```sh\n$ npm install cookie-parser\n```\n\n## API\n\n```js\nvar cookieParser = require('cookie-parser')\n```\n\n### cookieParser(secret, options)\n\nCreate a new cookie parser middleware function using the given `secret` and\n`options`.\n\n- `secret` a string or array used for signing cookies. This is optional and if\n  not specified, will not parse signed cookies. If a string is provided, this\n  is used as the secret. If an array is provided, an attempt will be made to\n  unsign the cookie with each secret in order.\n- `options` an object that is passed to `cookie.parse` as the second option. See\n  [cookie](https://www.npmjs.org/package/cookie) for more information.\n  - `decode` a function to decode the value of the cookie\n\nThe middleware will parse the `Cookie` header on the request and expose the\ncookie data as the property `req.cookies` and, if a `secret` was provided, as\nthe property `req.signedCookies`. These properties are name value pairs of the\ncookie name to cookie value.\n\nWhen `secret` is provided, this module will unsign and validate any signed cookie\nvalues and move those name value pairs from `req.cookies` into `req.signedCookies`.\nA signed cookie is a cookie that has a value prefixed with `s:`. Signed cookies\nthat fail signature validation will have the value `false` instead of the tampered\nvalue.\n\nIn addition, this module supports special \"JSON cookies\". These are cookie where\nthe value is prefixed with `j:`. When these values are encountered, the value will\nbe exposed as the result of `JSON.parse`. If parsing fails, the original value will\nremain.\n\n### cookieParser.JSONCookie(str)\n\nParse a cookie value as a JSON cookie. This will return the parsed JSON value\nif it was a JSON cookie, otherwise, it will return the passed value.\n\n### cookieParser.JSONCookies(cookies)\n\nGiven an object, this will iterate over the keys and call `JSONCookie` on each\nvalue, replacing the original value with the parsed value. This returns the\nsame object that was passed in.\n\n### cookieParser.signedCookie(str, secret)\n\nParse a cookie value as a signed cookie. This will return the parsed unsigned\nvalue if it was a signed cookie and the signature was valid. If the value was\nnot signed, the original value is returned. If the value was signed but the\nsignature could not be validated, `false` is returned.\n\nThe `secret` argument can be an array or string. If a string is provided, this\nis used as the secret. If an array is provided, an attempt will be made to\nunsign the cookie with each secret in order.\n\n### cookieParser.signedCookies(cookies, secret)\n\nGiven an object, this will iterate over the keys and check if any value is a\nsigned cookie. If it is a signed cookie and the signature is valid, the key\nwill be deleted from the object and added to the new object that is returned.\n\nThe `secret` argument can be an array or string. If a string is provided, this\nis used as the secret. If an array is provided, an attempt will be made to\nunsign the cookie with each secret in order.\n\n## Example\n\n```js\nvar express = require('express')\nvar cookieParser = require('cookie-parser')\n\nvar app = express()\napp.use(cookieParser())\n\napp.get('/', function (req, res) {\n  // Cookies that have not been signed\n  console.log('Cookies: ', req.cookies)\n\n  // Cookies that have been signed\n  console.log('Signed Cookies: ', req.signedCookies)\n})\n\napp.listen(8080)\n\n// curl command that sends an HTTP request with two cookies\n// curl http://127.0.0.1:8080 --cookie \"Cho=Kim;Greet=Hello\"\n```\n\n## License\n\n[MIT](LICENSE)\n\n[ci-image]: https://badgen.net/github/checks/expressjs/cookie-parser/master?label=ci\n[ci-url]: https://github.com/expressjs/cookie-parser/actions?query=workflow%3Aci\n[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/cookie-parser/master\n[coveralls-url]: https://coveralls.io/r/expressjs/cookie-parser?branch=master\n[npm-downloads-image]: https://badgen.net/npm/dm/cookie-parser\n[npm-url]: https://npmjs.org/package/cookie-parser\n[npm-version-image]: https://badgen.net/npm/v/cookie-parser\n","funding_links":["https://opencollective.com/express"],"categories":["JavaScript","中间件"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpressjs%2Fcookie-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpressjs%2Fcookie-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpressjs%2Fcookie-parser/lists"}