From 5a895e87a670ed2af9435e97c9aca927cb1d492f Mon Sep 17 00:00:00 2001 From: Elliot S Chi Date: Thu, 21 Jul 2016 11:16:12 -0700 Subject: [PATCH] fix(ajaxObservable): only set default Content-Type header when no body is sent (#1830) --- spec/observables/dom/ajax-spec.ts | 14 ++++++++++++++ src/observable/dom/AjaxObservable.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/spec/observables/dom/ajax-spec.ts b/spec/observables/dom/ajax-spec.ts index 1c37aeb98d..08198c6bbd 100644 --- a/spec/observables/dom/ajax-spec.ts +++ b/spec/observables/dom/ajax-spec.ts @@ -141,6 +141,20 @@ describe('Observable.ajax', () => { }); }); + it('should not set default Content-Type header when no body is sent', () => { + const obj: Rx.AjaxRequest = { + url: '/talk-to-me-goose', + method: 'GET' + }; + + Rx.Observable.ajax(obj).subscribe(); + + const request = MockXMLHttpRequest.mostRecent; + + expect(request.url).to.equal('/talk-to-me-goose'); + expect(request.requestHeaders).to.not.have.keys('Content-Type'); + }); + it('should error if createXHR throws', () => { let error; const obj = { diff --git a/src/observable/dom/AjaxObservable.ts b/src/observable/dom/AjaxObservable.ts index a3b5689590..c82c8dfef8 100644 --- a/src/observable/dom/AjaxObservable.ts +++ b/src/observable/dom/AjaxObservable.ts @@ -191,7 +191,7 @@ export class AjaxSubscriber extends Subscriber { } // ensure content type is set - if (!('Content-Type' in headers) && !(root.FormData && request.body instanceof root.FormData)) { + if (!('Content-Type' in headers) && !(root.FormData && request.body instanceof root.FormData) && typeof request.body !== 'undefined') { headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; }