diff options
| author | Ricardo Bin | 2013-09-03 18:19:38 -0300 | 
|---|---|---|
| committer | Brian Ford | 2013-10-01 14:02:00 -0700 | 
| commit | e9a222418a029d830698444cf95bf13f8ad75805 (patch) | |
| tree | 1c0ab955f4f2d3abf493fb6fd59707a62cf09dda | |
| parent | 936101041a9a1f1cf9fecf6b5fcfae206cd15424 (diff) | |
| download | angular.js-e9a222418a029d830698444cf95bf13f8ad75805.tar.bz2 | |
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
| -rw-r--r-- | src/ng/httpBackend.js | 4 | ||||
| -rw-r--r-- | test/ng/httpBackendSpec.js | 17 | 
2 files changed, 20 insertions, 1 deletions
| diff --git a/src/ng/httpBackend.js b/src/ng/httpBackend.js index 99da6549..3e7406b0 100644 --- a/src/ng/httpBackend.js +++ b/src/ng/httpBackend.js @@ -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 diff --git a/test/ng/httpBackendSpec.js b/test/ng/httpBackendSpec.js index 5d2654a9..faec5737 100644 --- a/test/ng/httpBackendSpec.js +++ b/test/ng/httpBackendSpec.js @@ -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);      }); +    });  }); | 
