@@ -202,17 +202,18 @@ export class AjaxSubscriber<T> extends Subscriber<Event> {
202
202
const headers = request . headers = request . headers || { } ;
203
203
204
204
// force CORS if requested
205
- if ( ! request . crossDomain && ! headers [ 'X-Requested-With' ] ) {
205
+ if ( ! request . crossDomain && ! this . getHeader ( headers , 'X-Requested-With' ) ) {
206
206
headers [ 'X-Requested-With' ] = 'XMLHttpRequest' ;
207
207
}
208
208
209
209
// ensure content type is set
210
- if ( ! ( 'Content-Type' in headers ) && ! ( root . FormData && request . body instanceof root . FormData ) && typeof request . body !== 'undefined' ) {
210
+ let contentTypeHeader = this . getHeader ( headers , 'Content-Type' ) ;
211
+ if ( ! contentTypeHeader && ! ( root . FormData && request . body instanceof root . FormData ) && typeof request . body !== 'undefined' ) {
211
212
headers [ 'Content-Type' ] = 'application/x-www-form-urlencoded; charset=UTF-8' ;
212
213
}
213
214
214
215
// properly serialize body
215
- request . body = this . serializeBody ( request . body , request . headers [ 'Content-Type' ] ) ;
216
+ request . body = this . serializeBody ( request . body , this . getHeader ( request . headers , 'Content-Type' ) ) ;
216
217
217
218
this . send ( ) ;
218
219
}
@@ -315,6 +316,16 @@ export class AjaxSubscriber<T> extends Subscriber<Event> {
315
316
}
316
317
}
317
318
319
+ private getHeader ( headers : { } , headerName : string ) : any {
320
+ for ( let key in headers ) {
321
+ if ( key . toLowerCase ( ) === headerName . toLowerCase ( ) ) {
322
+ return headers [ key ] ;
323
+ }
324
+ }
325
+
326
+ return undefined ;
327
+ }
328
+
318
329
private setupEvents ( xhr : XMLHttpRequest , request : AjaxRequest ) {
319
330
const progressSubscriber = request . progressSubscriber ;
320
331
0 commit comments