poppinss / node-cookie Goto Github PK
View Code? Open in Web Editor NEWsign, encrypt and parse http cookies
sign, encrypt and parse http cookies
I have used adonis for my app, I found that i cant overwrite same cookie key. For example,
old
# old request cookie
SESSION:111;DEVICE_INFO:111
response,
# response set cookie
set-cookie: SESSION:111;DEVICE_INFO:111
set-cookie: SESSION:222
then, in the browser, cookie is
SESSION:111;DEVICE_INFO:111;SESSION:222
This module uses the keygrip master repository which has major API changes compared to the npm release this causes other modules to break since they use the npm release that uses the release API.
I know that this module makes use of the new API functions which aren't available in the npm releases but it also causes conflicts with other modules causing them to break.
Is there any chance for this module to use the keygrip npm releases rather then the master repository?
Looks like this method fails. Here's a sample the code:
const denodeify = require('es6-denodeify')(Promise)
const fetch = require('node-fetch');
const tough = require('tough-cookie');
const cookiejar = new tough.CookieJar();
const setCookie = denodeify(cookiejar.setCookie.bind(cookiejar));
const getCookies = denodeify(cookiejar.getCookies.bind(cookiejar));
(async function () {
const response = await fetch('https://google.com');
const cookieString = await response.headers.get('set-cookie');
console.log(cookieString);
await setCookie(cookieString);
await getCookies();
})();
Any idea for a fix? Error:
TypeError: Cannot read property 'loose' of undefined
Can be run here:
https://repl.it
I found a weird bug affecting new visitors having no cookie at their first request (my project uses adonuxt ssr).
ERROR cookies.map is not a function
at Object.Cookie._append (/var/www/shared/node_modules/node-cookie/src/Cookie/index.js:164:39)
at Object.Cookie.create (/var/www/shared/node_modules/node-cookie/src/Cookie/index.js:389:10)
at Response.cookie (/var/www/shared/node_modules/@adonisjs/framework/src/Response/index.js:503:16)
And indeed, when you look at that line of code, you see that the cookies
variable is not affected by the else-case of the ternary condition:
Lines 162 to 166 in 07f12f6
So, my quick workaround was to change it like so:
Array.isArray(cookies) ? cookies.push(cookie) : (cookies = [cookies]).push(cookie)
And it solved it. (I also changed the cookies declaration to let
instead of const
)
I don't know if you are comfortable with parenthesis assignment allowing to use directly the assigned value.
If so, I can make a PR to merge my fix into the lib. ;)
Hi @thetutlage
Thank you for adonis. :) I have an installation error on windows machine.
It's linked with this row in package file:
"keygrip": "git://github.com/crypto-utils/keygrip.git"
Could you change it to standard description with version?
npm log:
npm install node-cookie
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install" "node-cookie"
npm ERR! node v7.3.0
npm ERR! npm v3.10.10
npm ERR! path C:\npm-cache_git-remotes\git-github-com-crypto-utils-keygrip-git-7cf0e7e1\HEAD
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall scandirnpm ERR! enoent ENOENT: no such file or directory, scandir 'C:\npm-cache_git-remotes\git-github-com-crypto-utils-keygrip-git-7cf0e7e1\HEAD'
npm ERR! enoent ENOENT: no such file or directory, scandir 'C:\npm-cache_git-remotes\git-github-com-crypto-utils-keygrip-git-7cf0e7e1\HEAD'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoentnpm ERR! Please include the following file with any support request:
npm ERR! C:\OpenServerLight\domains\localhost\adonis_basic_server\npm-debug.log
server render clear not work
Hello!
I've been trying to read a cookie set by user in browser. I found that adonis will read only self encrypted cookies. My cookie isn't that valuable, just a flag to tell the server what to render.
Given the adonis header like this :
cookie: 'BSID=4b3502957762fc598fd87865101bbc04a0258991; BUW.SERVER.logDetail={%22isVendor%22:true%2C%22id%22:803105%2C%22isPublished%22:false};' }
why can't i read BSID
or BUW.SERVER.logDetail
using nodeCookie.parse(req)
? (it gives me an empty object)
How can we set a expiration date or domain for a cookie?
nodeCookie.create(res, 'name', 'value');
Thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.