@@ -425,24 +425,31 @@ class GleapNetworkIntercepter {
425425 const open = XMLHttpRequest . prototype . open ;
426426 const send = XMLHttpRequest . prototype . send ;
427427
428- XMLHttpRequest . prototype . wrappedSetRequestHeader =
429- XMLHttpRequest . prototype . setRequestHeader ;
430- XMLHttpRequest . prototype . setRequestHeader = function ( header , value ) {
431- if ( ! this . requestHeaders ) {
432- this . requestHeaders = { } ;
433- }
428+ // Only override open and send if they haven't been overridden already.
429+ if ( XMLHttpRequest . prototype . gleapSetRequestHeader === undefined ) {
430+ XMLHttpRequest . prototype . gleapSetRequestHeader =
431+ XMLHttpRequest . prototype . setRequestHeader ;
432+ }
433+
434+ if ( XMLHttpRequest . prototype . gleapSetRequestHeader ) {
435+ XMLHttpRequest . prototype . setRequestHeader = function ( header , value ) {
436+ if ( ! this . requestHeaders ) {
437+ this . requestHeaders = { } ;
438+ }
434439
435- if ( this . requestHeaders && this . requestHeaders . hasOwnProperty ( header ) ) {
436- return ;
437- }
440+ if ( this . requestHeaders && this . requestHeaders . hasOwnProperty ( header ) ) {
441+ return ;
442+ }
438443
439- if ( ! this . requestHeaders [ header ] ) {
440- this . requestHeaders [ header ] = [ ] ;
441- }
444+ if ( ! this . requestHeaders [ header ] ) {
445+ this . requestHeaders [ header ] = [ ] ;
446+ }
447+
448+ this . requestHeaders [ header ] . push ( value ) ;
449+ this . gleapSetRequestHeader ( header , value ) ;
450+ } ;
451+ }
442452
443- this . requestHeaders [ header ] . push ( value ) ;
444- this . wrappedSetRequestHeader ( header , value ) ;
445- } ;
446453 XMLHttpRequest . prototype . open = function ( ) {
447454 this [ "bbRequestId" ] = ++ self . requestId ;
448455 callback . onOpen && callback . onOpen ( this , arguments ) ;
0 commit comments