Skip to content

Commit 7bb6829

Browse files
committed
added support for 302 redirection
1 parent 193b0d9 commit 7bb6829

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

lib/XMLHttpRequest.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,28 @@ exports.XMLHttpRequest = function() {
378378
self.dispatchEvent("readystatechange");
379379

380380
// Create the request
381-
request = doRequest(options, function(resp) {
381+
382+
function responseHandler(resp) {
383+
382384
response = resp;
385+
386+
if(response.statusCode === 302){
387+
settings.url = response.headers['location']
388+
var url = Url.parse(settings.url);
389+
host = url.hostname
390+
var newOptions = {
391+
hostname: url.hostname,
392+
port: url.port,
393+
path: url.path,
394+
method: settings.method,
395+
headers: headers
396+
}
397+
398+
request = doRequest(newOptions, responseHandler).on('error', errorHandler);
399+
request.end()
400+
return
401+
}
402+
383403
response.setEncoding("utf8");
384404

385405
setState(self.HEADERS_RECEIVED);
@@ -407,9 +427,12 @@ exports.XMLHttpRequest = function() {
407427
response.on('error', function(error) {
408428
self.handleError(error);
409429
});
410-
}).on('error', function(error) {
430+
}
431+
function errorHandler(error) {
411432
self.handleError(error);
412-
});
433+
}
434+
435+
request = doRequest(options, responseHandler).on('error', errorHandler);
413436

414437
// Node 0.4 and later won't accept empty data. Make sure it's needed.
415438
if (data) {

0 commit comments

Comments
 (0)