session: webRequest.OnHeadersReceived should follow server redirect
Its required to follow server redirects.
This commit is contained in:
parent
cf2a17cf88
commit
4fc35a4587
2 changed files with 32 additions and 5 deletions
|
@ -178,6 +178,8 @@ void ReadFromResponseObject(const base::DictionaryValue& response,
|
||||||
!it.IsAtEnd();
|
!it.IsAtEnd();
|
||||||
it.Advance()) {
|
it.Advance()) {
|
||||||
const base::ListValue* list;
|
const base::ListValue* list;
|
||||||
|
if (base::ToLowerASCII(it.key()) == "location")
|
||||||
|
(*headers)->ReplaceStatusLine("HTTP/1.1 302 Found");
|
||||||
if (it.value().GetAsList(&list)) {
|
if (it.value().GetAsList(&list)) {
|
||||||
(*headers)->RemoveHeader(it.key());
|
(*headers)->RemoveHeader(it.key());
|
||||||
for (size_t i = 0; i < list->GetSize(); ++i) {
|
for (size_t i = 0; i < list->GetSize(); ++i) {
|
||||||
|
|
|
@ -7,12 +7,18 @@ const session = remote.session
|
||||||
describe('webRequest module', function () {
|
describe('webRequest module', function () {
|
||||||
var ses = session.defaultSession
|
var ses = session.defaultSession
|
||||||
var server = http.createServer(function (req, res) {
|
var server = http.createServer(function (req, res) {
|
||||||
res.setHeader('Custom', ['Header'])
|
if (req.url == '/serverRedirect') {
|
||||||
var content = req.url
|
res.statusCode = 301
|
||||||
if (req.headers.accept === '*/*;test/header') {
|
res.setHeader('Location', 'http://' + req.rawHeaders[1])
|
||||||
content += 'header/received'
|
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
|
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 () {
|
describe('webRequest.onResponseStarted', function () {
|
||||||
|
|
Loading…
Add table
Reference in a new issue