diff --git a/lib/adapters/http.js b/lib/adapters/http.js index 1fc8d911dcef146c5b61e51a44320684cc459bf2..1126c2ccd7949d05e18ee16cb4224d5d55306f3b 100644 --- a/lib/adapters/http.js +++ b/lib/adapters/http.js @@ -3,7 +3,9 @@ var defaults = require('./../defaults'); var transformData = require('./../transformData'); var utils = require('./../utils'); var http = require('http'); +var https = require('https'); var url = require('url'); +var pkg = require('./../../package.json'); var Buffer = require('buffer').Buffer; module.exports = function httpAdapter(resolve, reject, config) { @@ -21,6 +23,9 @@ module.exports = function httpAdapter(resolve, reject, config) { config.headers || {} ); + // Set User-Agent (required by some servers) + headers['User-Agent'] = 'node-axios/' + pkg.version; + if (data) { if (utils.isArrayBuffer(data)) { data = new Buffer(new Uint8Array(data)); @@ -29,6 +34,7 @@ module.exports = function httpAdapter(resolve, reject, config) { } else { return reject(new Error('Data after transformation must be a string or an ArrayBuffer')); } + // Add Content-Length header if data exists headers['Content-Length'] = data.length; } @@ -44,7 +50,8 @@ module.exports = function httpAdapter(resolve, reject, config) { }; // Create the request - var req = http.request(options, function (res) { + var transport = parsed.protocol === 'https:' ? https : http; + var req = transport.request(options, function (res) { var responseText = ''; res.on('data', function (chunk) { responseText += chunk;