fix($httpBackend): set headers with falsy values

This is a breaking change. To migrate to the new behavior,
delete or set headers to `undefined` to avoid having them sent.
To restore the old behavior, override `$httpBackendProvider`
with the old implementation.

Closes #2984
This commit is contained in:
Ricardo Bin 2013-09-03 18:19:38 -03:00 committed by Brian Ford
parent 936101041a
commit e9a222418a
2 changed files with 20 additions and 1 deletions

View file

@ -56,7 +56,9 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument,
var xhr = new XHR();
xhr.open(method, url, true);
forEach(headers, function(value, key) {
if (value) xhr.setRequestHeader(key, value);
if (isDefined(value)) {
xhr.setRequestHeader(key, value);
}
});
// In IE6 and 7, this might be called synchronously when xhr.send below is called and the

View file

@ -101,6 +101,22 @@ describe('$httpBackend', function() {
});
});
it('should set requested headers even if they have falsy values', function() {
$backend('POST', 'URL', null, noop, {
'X-header1': 0,
'X-header2': '',
'X-header3': false,
'X-header4': undefined
});
xhr = MockXhr.$$lastInstance;
expect(xhr.$$reqHeaders).toEqual({
'X-header1': 0,
'X-header2': '',
'X-header3': false
});
});
it('should abort request on timeout', function() {
callback.andCallFake(function(status, response) {
@ -388,6 +404,7 @@ describe('$httpBackend', function() {
expect(callback).toHaveBeenCalled();
expect(callback.mostRecentCall.args[0]).toBe(404);
});
});
});