Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
http-cookie-agent
Advanced tools
Allows cookies with every Node.js HTTP clients (e.g. axios, node-fetch).
npm install http-cookie-agent tough-cookie
Pass http-cookie-agent
to HTTP clients instead of http(s).Agent.
import { CookieJar } from 'tough-cookie';
import { HttpCookieAgent, HttpsCookieAgent, MixedCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const httpAgent = new HttpCookieAgent({ jar });
// To access via HTTPS, use HttpsCookieAgent instead.
const httpsAgent = new HttpsCookieAgent({ jar });
// If the client library cannot switch Agents based on the protocol, use MixedCookieAgent instead.
const mixedAgent = new MixedCookieAgent({ jar });
// Pass agent to HTTP client.
client.request('https://example.com', { agent: httpAgent });
http
/ https
/ axios
/ node-fetch
/ got
** / superagent
** / request
** / needle
/ phin
/ @hapi/wreck
/ urllib
etc.
** The library supports cookies by default. You may not need http-cookie-agent
.
See also examples for more details.
http
/ https
import https from 'https';
import { CookieJar } from 'tough-cookie';
import { HttpsCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const agent = new HttpsCookieAgent({ jar });
https.get('https://example.com', { agent }, (res) => {
// ...
});
axios
import axios from 'axios';
import { CookieJar } from 'tough-cookie';
import { HttpCookieAgent, HttpsCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const client = axios.create({
httpAgent: new HttpCookieAgent({ jar }),
httpsAgent: new HttpsCookieAgent({ jar }),
});
await client.get('https://example.com');
node-fetch
import fetch from 'node-fetch';
import { CookieJar } from 'tough-cookie';
import { HttpCookieAgent, HttpsCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const httpAgent = new HttpCookieAgent({ jar });
const httpsAgent = new HttpsCookieAgent({ jar });
await fetch('https://example.com', {
agent: ({ protocol }) => {
return protocol === 'https:' ? httpsAgent : httpAgent;
},
});
got
:warning: got
supports cookies by default. You may not need http-cookie-agent
.
See https://github.com/sindresorhus/got/tree/v11.8.2#cookies.
import got from 'got';
import { CookieJar } from 'tough-cookie';
import { HttpCookieAgent, HttpsCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const client = got.extend({
agent: {
http: new HttpCookieAgent({ jar }),
https: new HttpsCookieAgent({ jar }),
},
});
await client('https://example.com');
superagent
:warning: superagent
supports cookies by default. You may not need http-cookie-agent
.
See https://github.com/visionmedia/superagent/blob/v6.1.0/docs/index.md#saving-cookies.
import superagent from 'superagent';
import { CookieJar } from 'tough-cookie';
import { MixedCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const mixedAgent = new MixedCookieAgent({ jar });
const client = superagent.agent().use((req) => req.agent(mixedAgent));
await client.get('https://example.com');
request
:warning: request
supports cookies by default. You may not need http-cookie-agent
.
See https://github.com/request/request/tree/v2.88.1#examples.
import request from 'request';
import { CookieJar } from 'tough-cookie';
import { MixedCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const client = request.defaults({
agent: new MixedCookieAgent({ jar }),
});
client.get('https://example.com', (_err, _res) => {
// ...
});
needle
import needle from 'needle';
import { CookieJar } from 'tough-cookie';
import { MixedCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
await needle('get', 'https://example.com', {
agent: new MixedCookieAgent({ jar }),
});
phin
import phin from 'phin';
import { CookieJar } from 'tough-cookie';
import { MixedCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
await phin({
url: 'https://example.com',
core: {
agent: new MixedCookieAgent({ jar }),
},
});
@hapi/wreck
import Wreck from '@hapi/wreck';
import { CookieJar } from 'tough-cookie';
import { HttpCookieAgent, HttpsCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const client = Wreck.defaults({
agents: {
http: new HttpCookieAgent({ jar }),
https: new HttpsCookieAgent({ jar }),
httpsAllowUnauthorized: new HttpsCookieAgent({ jar }),
},
});
await client.get('https://example.com');
urllib
import urllib from 'urllib';
import { CookieJar } from 'tough-cookie';
import { HttpCookieAgent, HttpsCookieAgent } from 'http-cookie-agent';
const jar = new CookieJar();
const client = urllib.create({
agent: new HttpCookieAgent({ jar }),
httpsAgent: new HttpsCookieAgent({ jar }),
});
await client.request('https://example.com');
If you want to use another Agent library, wrap the agent in createCookieAgent
.
import https from 'https';
import { HttpsAgent as KeepAliveAgent } from 'agentkeepalive';
import { CookieJar } from 'tough-cookie';
import { createCookieAgent } from 'http-cookie-agent';
const Agent = createCookieAgent(KeepAliveAgent);
const jar = new CookieJar();
const agent = new Agent({ jar });
https.get('https://example.com', { agent }, (res) => {
// ...
});
PRs accepted.
FAQs
Allows cookies with every Node.js HTTP clients.
We found that http-cookie-agent demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.