node-http-xhr
An implementation of XMLHttpRequest
for node.js
using
the http.request
API.
Motivation
This package was written to provide the XMLHttpRequest
API to test browser
code that is being tested in a node.js
environment.
Installation
npm install --save node-http-xhr
Usage
var XMLHttpRequest = require('node-http-xhr');
global.XMLHttpRequest = require('node-http-xhr');
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
console.log('readyState: ' + req.readyState);
};
req.addEventListener('load', function() {
console.log('response: ' + req.response);
});
req.open('GET', 'https://github.com/aspyrx', true);
req.send();
Note about browser environments
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.
Development
Documentation
To generate documentation:
npm run doc
The html
documentation will be placed in doc/
.
Tests
npm test
Known issues
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
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 in node.js
right now.