An implementation of XMLHttpRequest
for node.js
using
the http.request
API.
This package was written to provide the XMLHttpRequest
API to test browser
code that is being tested in a node.js
environment.
npm install --save node-http-xhr
// Standalone usage
var XMLHttpRequest = require('node-http-xhr');
// Usage as global XHR constructor
global.XMLHttpRequest = require('node-http-xhr');
var req = new XMLHttpRequest();
// Event handlers via .on${event} properties:
req.onreadystatechange = function() {
console.log('readyState: ' + req.readyState);
};
// or using .addEventListener(event, handler):
req.addEventListener('load', function() {
console.log('response: ' + req.response);
});
req.open('GET', 'https://github.com/aspyrx', true);
req.send();
If you use a bundler like browserify
or webpack
that follows the browser
field in package.json
, the module will simply export window.XMLHttpRequest
.
This is provided for sake of compatibility.
To generate documentation:
npm run doc
The html
documentation will be placed in doc/
.
npm test
Currently, some features are lacking:
- Some ProgressAPI events (
loadstart
,loadend
,progress
) responseType
values other than''
or'text'
and corresponding parsing- As a result of the above,
overrideMimeType()
isn't very useful
- As a result of the above,
setRequestHeader()
doesn't check for forbidden headers.withCredentials
is defined as an instance property, but doesn't do anything since there's no use case for CORS-like requests innode.js
right now.