Please see GitHub releases page for the current changelog.
.connect()
IP/DNS override option (Kornel).trustLocalhost()
option for allowing broken HTTPS onlocalhost
.abort()
used with promises rejects the promise.
- Node.js v4 has reached it's end of life, so we no longer support it. It's v6+ or later. We recommend Node.js 10.
- We now use ES6 in the browser code, too.
- If you're using Browserify or Webpack to package code for Internet Explorer, you will also have to use Babel.
- The pre-built node_modules/superagent.js is still ES5-compatible.
.end(…)
returnsundefined
instead of the request. If you need the request object after calling.end()
(and you probably don't), save it in a variable and callrequest.end(…)
. Consider not using.end()
at all, and migrating to promises by calling.then()
instead.- In Node, responses with unknown MIME type are buffered by default. To get old behavior, if you use custom unbuffered parsers, add
.buffer(false)
to requests or setsuperagent.buffer[yourMimeType] = false
. - Invalid uses of
.pipe()
throw.
- Throw if
req.abort().end()
is called - Throw if using unsupported mix of send and field
- Reject
.end()
promise on all error events (Kornel Lesiński) - Set
https.servername
from theHost
header (Kornel Lesiński) - Leave backticks unencoded in query strings where possible (Ethan Resnick)
- Update node-mime to 2.x (Alexey Kucherenko)
- Allow default buffer settings based on response-type (shrey)
response.buffered
is more accurate.
- Add flags for 201 & 422 responses (Nikhil Fadnis)
- Emit progress event while uploading Node
Buffer
via send method (Sergey Akhalkov) - Fixed setting correct cookies for redirects (Damien Clark)
- Replace .catch with ['catch'] for IE9 Support (Miguel Stevens)
- Fixed handling of exceptions thrown from callbacks
- Stricter matching of
+json
MIME types.
- Clear authorization header on cross-domain redirect
- Added support for "globally" defined headers and event handlers via
superagent.agent()
. It now remembers default settings for all its requests. - Added optional callback to
.retry()
(Alexander Murphy) - Unified auth args handling in node/browser (Edmundo Alvarez)
- Fixed error handling in zlib pipes (Kornel)
- Documented that 3xx status codes are errors (Mickey Reiss)
- Limit maximum response size. Prevents zip bombs (Kornel)
- Catch and pass along errors in
.ok()
callback (Jeremy Ruppel) - Fixed parsing of XHR headers without a newline (nsf)
- Upgrade MIME type dependency to a newer, secure version
- Recognize PDF MIME as binary
- Fix for error in subsequent require() calls (Steven de Salas)
- Support disabling TCP_NODELAY option (#1240) (xiamengyu)
- Send payload in query string for GET and HEAD shorthand API (Peter Lyons)
- Support passphrase with pfx certificate (Paul Westerdale (ABRS Limited))
- Documentation improvements (Peter Lyons)
- Fixed duplicated query string params (#1200) (Kornel)
- Allow crossDomain errors to be retried (#1194) (Michael Olson)
- Read responseType property from the correct object (Julien Dupouy)
- Check for ownProperty before adding header (Lucas Vieira)
- Add errno to distinguish between request timeout and body download timeout (#1184) (Kornel Lesiński)
- Warn about bogus timeout options (#1185) (Kornel Lesiński)
- Treat videos like images (Kornel Lesiński)
- Avoid renaming module (Kornel Lesiński)
- Fixed being able to define own parsers when their mime type starts with
text/
(Damien Clark) withCredentials(false)
(Andy Woods)- Use
formData.on
instead of.once
(Kornel Lesiński) - Ignore
attach("file",null)
(Kornel Lesiński)
- Allow
retry()
andretry(0)
(Alexander Pope) - Allow optional body/data in DELETE requests (Alpha Shuro)
- Fixed query string on retried requests (Kornel Lesiński)
- New
.retry(n)
method anderr.retries
(Alexander Pope) - Docs for HTTPS request (Jun Wan Goh)
- Fixed "double callback bug" warning on timeouts of gzipped responses
- Added
.ok(callback)
that allows customizing which responses are errors (Kornel Lesiński) - Added
.responseType()
to Node version (Kornel Lesiński) - Added
.parse()
to browser version (jakepearson) - Fixed parse error when using
responseType('blob')
(Kornel Lesiński)
- Added
.timeout({response:ms})
, which allows limiting maximum response time independently from total download time (Kornel Lesiński) - Added warnings when
.end()
is called more than once (Kornel Lesiński) - Added
response.links
to browser version (Lukas Eipert) btoa
is no longer required in IE9 (Kornel Lesiński)- Fixed
.sortQuery()
on URLs without query strings (Kornel Lesiński) - Refactored common response code into
ResponseBase
(Lukas Eipert)
- Added
.sortQuery()
(vicanso) - Added support for arrays and bools in
.field()
(Kornel Lesiński) - Made
superagent.Request
subclassable without need to patch all static methods (Kornel Lesiński)
- Dropped support for Node 0.x. Please upgrade to at least Node 4.
- Dropped support for componentjs (Damien Caselli)
- Removed deprecated
.part()
/superagent.Part
APIs. - Removed unreliable
.body
property on internal response object used by unbuffered parsers. Note: the normalresponse.body
is unaffected. - Multiple
.send()
calls mixingBuffer
/Blob
and JSON data are not possible and will now throw instead of messing up the data. - Improved
.send()
data object type check (Fernando Mendes) - Added common prototype for Node and browser versions (Andreas Helmberger)
- Added
http+unix:
schema to support Unix sockets (Yuki KAN) - Added full
attach
options parameter in the Node version (Lapo Luchini) - Added
pfx
TLS option with newpfx()
method. (Reid Burke) - Internally changed
.on
to.once
to prevent possible memory leaks (Matt Blair) - Made all errors reported as an event (Kornel Lesiński)
- Enabled
.field()
to handle objects (Affan Shahid) - Added authentication with client certificates (terusus)
- Added
.catch()
for more Promise-like interface (Maxim Samoilov, Kornel Lesiński) - Silenced errors from incomplete gzip streams for compatibility with web browsers (Kornel Lesiński)
- Fixed
event.direction
in uploads (Kornel Lesiński) - Fixed returned value of overwritten response object's
on()
method (Juan Dopazo)
- Added
timedout
property to node Request instance (Alexander Pope) - Unified
null
querystring values in node and browser environments. (George Chung)
- Refactored async parsers. Now the
end
callback waits for async parsers to finish (Kornel Lesiński) - Errors thrown in
.end()
callback don't cause the callback to be called twice (Kornel Lesiński) - Added
headers
totoJSON()
(Tao)
Breaking changes are in rarely used functionality, so we hope upgrade will be smooth for most users.
- Browser: The
.parse()
method has been renamed to.serialize()
for consistency with NodeJS version. - Browser: Query string keys without a value used to be parsed as
'undefined'
, now their value is''
(empty string) (shura, Kornel Lesiński). - NodeJS: The
redirect
event is called after new query string and headers have been set and is allowed to override the request URL (Kornel Lesiński) .then()
returns a realPromise
. Note that use of superagent with promises now requires a globalPromise
object. If you target Internet Explorer or Node 0.10, you'll needrequire('es6-promise').polyfill()
or similar.- Upgraded all dependencies (Peter Lyons)
- Renamed properties documented as
@api private
to have_prefixed
names (Kornel Lesiński)
- Extracted common functions to request-base (Peter Lyons)
- Fixed race condition in pipe tests (Peter Lyons)
- Handle
FormData
error events (scriptype) - Fixed wrong jsdoc of Request#attach (George Chung)
- Updated and improved tests (Peter Lyons)
request.head()
supports.redirects(5)
call (Kornel Lesiński)response
event is also emitted when using.pipe()
- Fixed handling of HTTP status 204 with content-encoding: gzip (Andrew Shelton)
- Handling of FormData error events (scriptype)
- Fixed parsing of
vnd+json
MIME types (Kornel Lesiński) - Aliased browser implementation of
.parse()
as.serialize()
for forward compatibility
- Fixed form-data incompatibility with IE9
- Extracted common code into request-base class (Peter Lyons)
- It does not affect the public API, but please let us know if you notice any plugins/subclasses breaking!
- Added option
{type:'auto'}
toauth
method, which enables browser-native auth types (Jungle, Askar Yusupov) - Added
responseType()
to set XHRresponseType
(chris) - Switched to form-data for browserify-compatible
FormData
(Peter Lyons) - Added
statusCode
to error response when JSON response is malformed (mattdell) - Prevented TCP port conflicts in all tests (Peter Lyons)
- Updated form-data dependency
- Fix case-sensitivity of header fields introduced by
a4ddd6a
. (Edward J. Jinotti) - bump extend dependency, as former version did not contain any license information (Lukas Eipert)
- Fixed a conflict with express when using npm 3.x (Glenn)
- Fixed redirects after a multipart/form-data POST request (cyclist2)
- When attaching files, read default filename from the
File
object (JD Isaacks) - Add
direction
property toprogress
events (Joseph Dykstra) - Update component-emitter & formidable (Kornel Lesiński)
- Don't re-encode query string needlessly (Ruben Verborgh)
- ensure querystring is appended when doing
stream.pipe(request)
(Keith Grennan) - change set header function, not call
this.request()
until callthis.end()
(vicanso) - Add no-op
withCredentials
to Node API (markdalgleish) - fix
delete
breaking on ie8 (kenjiokabe) - Don't let request error override responses (Clay Reimann)
- Increased number of tests shared between node and client (Kornel Lesiński)
- avoid misleading CORS error message
- added 'progress' event on file/form upload in Node (Olivier Lalonde)
- return raw response if the response parsing fails (Rei Colina)
- parse content-types ending with
+json
as JSON (Eiryyy) - fix to avoid throwing errors on aborted requests (gjurgens)
- retain cookies on redirect when hosts match (Tom Conroy)
- added Bower manifest (Johnny Freeman)
- upgrade to latest cookiejar (Andy Burke)
- encode array values as
key=1&key=2&key=3
etc... (aalpern, Davis Kim) - avoid the error which is omitted from 'socket hang up'
- faster JSON parsing, handling of zlib errors (jbellenger)
- fix IE11 sends 'undefined' string if data was undefined (Vadim Goncharov)
- alias
del()
method asdelete()
(Aaron Krause) - revert Request#parse since it was actually Response#parse
- add Request#parse method to client library
- add missing statusCode in client response
- don't apply JSON heuristics if a valid parser is found
- fix detection of root object for webworkers
- fix incorrect content-length of data set to buffer
- serialize request data takes into account charsets
- add basic promise support via a
then
function
- add progress events to downlodas
- make usable in webworkers
- add support for 308 redirects
- update node-form-data dependency
- update to work in react native
- update node-mime dependency
- Fix responseType checks without xhr2 and ie9 tests (rase-)
- errors have .status and .response fields if applicable (defunctzombie)
- fix end callback called before saving cookies (rase-)
- All non-200 responses are treated as errors now. (The callback is called with an error when the response has a status < 200 or >= 300 now. In previous versions this would not have raised an error and the client would have to check the
res
object. See #283. - keep timeouts intact across redirects (hopkinsth)
- handle falsy json values (themaarten)
- fire response events in browser version (Schoonology)
- getXHR exported in client version (KidsKilla)
- remove arity check on
.end()
callbacks (defunctzombie) - avoid setting content-type for host objects (rexxars)
- don't index array strings in querystring (travisjeffery)
- fix pipe() with redirects (cyrilis)
- add xhr2 file download (vstirbu)
- set default response type to text/plain if not specified (warrenseine)
- Trim text before parsing json (gjohnson)
- Update tests to express 4 (gaastonsr)
- Prevent double callback when error is thrown (pgn-vole)
- Fix missing clearTimeout (nickdima)
- Update debug (TooTallNate)
- Add toJSON() to request and response instances. (yields)
- Prevent HEAD requests from getting parsed. (gjohnson)
- Update debug. (TooTallNate)
- Fix basic auth issue when password is falsey value. (gjohnson)
- Add unset() to browser. (shesek)
- Prefer XHR over ActiveX. (omeid)
- Catch parse errors. (jacwright)
- Update qs dependency. (wercker)
- Add use() to node. (Financial-Times)
- Add response text to errors. (yields)
- Don't send empty cookie headers. (undoZen)
- Don't parse empty response bodies. (DveMac)
- Use hostname when setting cookie host. (prasunsultania)
- Handle parser errors. (kof)
- Ensure not to use default parsers when there is a user defined one. (kof)
- Upgrade cookiejar dependency (juanpin)
- Support image mime types (nebulade)
- Make .agent chainable (kof)
- Upgrade debug (TooTallNate)
- Fix docs (aheckmann)
- Use "form-data" module for the multipart/form-data implementation. (TooTallNate)
- Add basic
field()
andattach()
functions for HTML5 FormData. (TooTallNate) - Deprecate
part()
. (TooTallNate) - Set default user-agent header. (bevacqua)
- Add
unset()
method for removing headers. (bevacqua) - Update cookiejar. (missinglink)
- Fix response error formatting. (shesek)
- supply uri malformed error to the callback (yields)
- add request event (yields)
- allow simple auth (yields)
- add request event (yields)
- switch to component/reduce (visionmedia)
- fix part content-disposition (mscdex)
- add browser testing via zuul (defunctzombie)
- adds request.use() (johntron)
- remove support for 0.6 (superjoe30)
- fix CORS withCredentials (wejendorp)
- add "test" script (superjoe30)
- add request .accept() method (nickl-)
- add xml to mime types mappings (nickl-)
- fix parse body error on HEAD requests (gjohnson)
- fix documentation typos (matteofigus)
- fix content-type + charset (bengourley)
- fix null values on query parameters (cristiandouce)
- pin should.js to 1.3.0 due to breaking change in 2.0.x
- fix browserify regression
- add browser field to support browserify
- fix .field() value number support
- node: add a Request#agent() function to set the http Agent to use
- fix .pipe() unzipping on more recent nodes. Closes #240
- fix passing an empty object to .query() no longer appends "?"
- fix formidable error handling
- update formidable
- fix: emit 'end' when piping.
- add try/catch around parseLinks
- make
Response#toError()
have a more meaningfulmessage
- add debug()s to the node client
- add .abort() method to node client
- set .agent = false always
- remove X-Requested-With. Closes #189
- fix unzip error handling
- fix HEAD unzip bug
- add flag to ensure the callback is never invoked twice
- add superagent.js build output
- update qs
- update emitter-component
- revert "add browser field to support browserify" see GH-221
- add browser field to support browserify
- add host object check to fix serialization of File/Blobs etc as json
- update qs
- add client-side basic auth
- fix retaining of .set() header field case
- add progress events to client
- add simple example
- add res.headers as alias of res.header for browser client
- add res.get(field) to node/client
- fix get content-type even if can't get other headers in firefox. fixes #181
- add quick "progress" event support
- add test to check if response acts as a readable stream
- add ReadableStream in the Response prototype.
- add test to assert correct redirection when the host changes in the location header.
- add default Accept-Encoding. Closes #155
- fix req.pipe() return value of original stream for node parity. Closes #171
- remove the host header when cleaning headers to properly follow the redirection.
- add x-domain error handling
- add header persistence on redirects
- add .error Error object. Closes #156
- add forcing of res.text removal for FF HEAD responses. Closes #162
- add reduce component usage. Closes #90
- move better-assert dep to development deps
- add req.timeout(ms) support for the client
- fix client-side .query(str) support
- add .parse(fn) support
- fix socket hangup with dates in querystring. Closes #146
- fix socket hangup "error" event when a callback of arity 2 is provided
- add emission of error from
Request#callback()
- add a better fix for nodes weird socket hang up error
- add PUT/POST/PATCH data support to client short-hand functions
- add .license property to component.json
- change client portion to build using component(1)
- fix GET body support [guille]
- fix
.buffer()
res.text
when no parser matches
- change: use
this
whenwindow
is undefined - update to new component spec [juliangruber]
- fix emission of "data" events for compressed responses without encoding. Closes #125
- add field name to .attach()
- add text "parser"
- refactor isObject()
- remove wtf isFunction() helper
- fix
Buffer
responses [TooTallNate] - fix
res.type
when a "type" param is present [TooTallNate]
- remove GET
.send()
==.query()
special-case (API change !!!)
- add
.aborted
prop - add
.abort()
. Closes #115
- add
.forbidden
response property - add component.json
- change emitter-component to 0.0.5
- fix client-side tests
- add
.timeout(ms)
. Closes #17
- fix pathname relative redirects. Closes #112
- fix redirects when schema is specified
- add
res.buffered
flag - add buffering of text/*, json and forms only by default. Closes #61
- add
.buffer(false)
cancellation - add cookie jar support [hunterloftis]
- add agent functionality [hunterloftis]
- allow
query()
to be called after the internalreq
has been created [tootallnate]
- add
res.send('foo=bar')
default of "application/x-www-form-urlencoded"
- add "methods" dep
- add
.end()
arity check to node callbacks - fix unzip support due to weird node internals
- Added "Link" response header field parsing, exposing
res.links
- Added 303, 305 and 307 as redirect status codes [slaskis]
- Fixed passing an object as the url
- Added component support
- Fixed redirect data
- Added HTTP PATCH support
- Fixed: GET / HEAD when following redirects. Closes #86
- Fixed Content-Length detection for multibyte chars
- Added
.head()
method [browser]. Closes #78 - Added
make test-cov
support - Added multipart request support. Closes #11
- Added all methods that node supports. Closes #71
- Added "response" event providing a Response object. Closes #28
- Added
.query(obj)
. Closes #59 - Added
res.type
(browser). Closes #54 - Changed: default
res.body
andres.files
to {} - Fixed: port existing query-string fix (browser). Closes #57
- Added deflate/gzip support [guillermo]
- Added
res.type
(Content-Type void of params) - Added
res.statusCode
to mirror node - Added
res.headers
to mirror node - Changed: parsers take callbacks
- Fixed optional schema support. Closes #49
- Added url auth support
- Added
.auth(username, password)
- Added basic auth support [node]. Closes #41
- Added
make test-docs
- Added guillermo's EventEmitter. Closes #16
- Removed
Request#data()
for SS, renamed tosend()
- Removed
Request#data()
from client, renamed tosend()
- Fixed array support. [browser]
- Fixed array support. Closes #35 [node]
- Fixed
EventEmitter#emit()
- Added error to callback
- Bumped node dep for 0.5.x
- Added markdown documentation
- Added
request(url[, fn])
support to the client - Added
qs
dependency to package.json - Added options for
Request#pipe()
- Added support for
request(url, callback)
- Added
request(url)
as shortcut forrequest.get(url)
- Added
Request#pipe(stream)
- Added inherit from
Stream
- Added multipart support
- Added ssl support (node)
- Removed Content-Length field from client
- Fixed buffering,
setEncoding()
to utf8 [reported by stagas] - Fixed "end" event when piping
- Added
res.redirect
flag (node) - Added redirect support (node)
- Added
Request#redirects(n)
(node) - Added
.set(object)
header field support - Fixed
Content-Length
support
- Added support for multiple calls to
.data()
- Added support for
.get(uri, obj)
- Added GET
.data()
querystring support - Added IE{6,7,8} support [alexyoung]
- Initial commit