Skip to content

Commit 0bda0ae

Browse files
committed
Merge pull request #74 from matthewwithanm/301
Handle 301 redirects
2 parents 44fc4b5 + 5574f23 commit 0bda0ae

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

lib/XMLHttpRequest.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ exports.XMLHttpRequest = function() {
385385
response = resp;
386386
// Check for redirect
387387
// @TODO Prevent looped redirects
388-
if (response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
388+
if (response.statusCode === 301 || response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {
389389
// Change URL to the redirect location
390390
settings.url = response.headers.location;
391391
var url = Url.parse(settings.url);

tests/test-redirect-301.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
var sys = require("util")
2+
, assert = require("assert")
3+
, XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest
4+
, xhr = new XMLHttpRequest()
5+
, http = require("http");
6+
7+
// Test server
8+
var server = http.createServer(function (req, res) {
9+
if (req.url === '/redirectingResource') {
10+
res.writeHead(301, {'Location': 'http://localhost:8000/'});
11+
res.end();
12+
return;
13+
}
14+
15+
var body = "Hello World";
16+
res.writeHead(200, {
17+
"Content-Type": "text/plain",
18+
"Content-Length": Buffer.byteLength(body),
19+
"Date": "Thu, 30 Aug 2012 18:17:53 GMT",
20+
"Connection": "close"
21+
});
22+
res.write("Hello World");
23+
res.end();
24+
25+
this.close();
26+
}).listen(8000);
27+
28+
xhr.onreadystatechange = function() {
29+
if (this.readyState == 4) {
30+
assert.equal(xhr.status, 200);
31+
assert.equal(xhr.getRequestHeader('Location'), '');
32+
assert.equal(xhr.responseText, "Hello World");
33+
sys.puts("done");
34+
}
35+
};
36+
37+
try {
38+
xhr.open("GET", "http://localhost:8000/redirectingResource");
39+
xhr.send();
40+
} catch(e) {
41+
console.log("ERROR: Exception raised", e);
42+
}

0 commit comments

Comments
 (0)