session: webRequest.OnHeadersReceived should follow server redirect

Its required to follow server redirects.
This commit is contained in:
deepak1556 2016-04-05 08:48:20 +05:30
parent cf2a17cf88
commit 4fc35a4587
2 changed files with 32 additions and 5 deletions

View file

@ -178,6 +178,8 @@ void ReadFromResponseObject(const base::DictionaryValue& response,
!it.IsAtEnd();
it.Advance()) {
const base::ListValue* list;
if (base::ToLowerASCII(it.key()) == "location")
(*headers)->ReplaceStatusLine("HTTP/1.1 302 Found");
if (it.value().GetAsList(&list)) {
(*headers)->RemoveHeader(it.key());
for (size_t i = 0; i < list->GetSize(); ++i) {

View file

@ -7,12 +7,18 @@ const session = remote.session
describe('webRequest module', function () {
var ses = session.defaultSession
var server = http.createServer(function (req, res) {
res.setHeader('Custom', ['Header'])
var content = req.url
if (req.headers.accept === '*/*;test/header') {
content += 'header/received'
if (req.url == '/serverRedirect') {
res.statusCode = 301
res.setHeader('Location', 'http://' + req.rawHeaders[1])
res.end()
} else {
res.setHeader('Custom', ['Header'])
var content = req.url
if (req.headers.accept === '*/*;test/header') {
content += 'header/received'
}
res.end(content)
}
res.end(content)
})
var defaultURL = null
@ -297,6 +303,25 @@ describe('webRequest module', function () {
}
})
})
it('follows server redirect', function (done) {
ses.webRequest.onHeadersReceived(function (details, callback) {
var responseHeaders = details.responseHeaders
callback({
responseHeaders: responseHeaders,
})
})
$.ajax({
url: defaultURL + 'serverRedirect',
success: function (data, status, xhr) {
assert.equal(xhr.getResponseHeader('Custom'), 'Header')
done()
},
error: function (xhr, errorType) {
done(errorType)
}
})
})
})
describe('webRequest.onResponseStarted', function () {