@@ -126,6 +126,26 @@ export class BackgroundGrant {
126
126
} , {
127
127
urls : [ "<all_urls>" ] ,
128
128
} , [ "blocking" , "requestHeaders" , "extraHeaders" ] ) ;
129
+ let responseHeader : { [ key : string ] : boolean } = { "set-cookie" : true } ;
130
+ chrome . webRequest . onHeadersReceived . addListener ( ( details ) => {
131
+ if ( details . initiator && chrome . extension . getURL ( "" ) . startsWith ( details . initiator ) ) {
132
+ details . responseHeaders ?. forEach ( val => {
133
+ if ( responseHeader [ val . name ] ) {
134
+ details . responseHeaders ?. push ( {
135
+ name : "x-cat-" + this . rand + "-" + val . name ,
136
+ value : val . value ,
137
+ binaryValue : val . binaryValue ,
138
+ } ) ;
139
+ }
140
+ } ) ;
141
+ console . log ( details . responseHeaders ) ;
142
+ return {
143
+ responseHeaders : details . responseHeaders
144
+ }
145
+ }
146
+ } , {
147
+ urls : [ "<all_urls>" ] ,
148
+ } , [ "blocking" , "responseHeaders" , "extraHeaders" ] ) ;
129
149
} catch ( e ) {
130
150
}
131
151
}
@@ -350,41 +370,38 @@ export class BackgroundGrant {
350
370
351
371
}
352
372
353
-
354
373
protected dealXhr ( config : GM_Types . XHRDetails , xhr : XMLHttpRequest ) : GM_Types . XHRResponse {
374
+ let removeXCat = new RegExp ( "x-cat-" + this . rand + "-" , "g" ) ;
375
+ console . log ( xhr . getAllResponseHeaders ( ) . replace ( removeXCat , "" ) , removeXCat ) ;
355
376
let respond : GM_Types . XHRResponse = {
356
377
finalUrl : config . url ,
357
378
readyState : < any > xhr . readyState ,
358
379
status : xhr . status ,
359
380
statusText : xhr . statusText ,
360
- responseHeaders : xhr . getAllResponseHeaders ( ) ,
381
+ responseHeaders : xhr . getAllResponseHeaders ( ) . replace ( removeXCat , "" ) ,
361
382
responseType : config . responseType ,
362
383
} ;
363
384
if ( xhr . readyState === 4 ) {
364
- let contentType = xhr . getResponseHeader ( "Content-Type" ) ;
365
- if ( ( ! config . responseType && contentType && contentType . indexOf ( "application/json" ) !== - 1 ) ) {
385
+ if ( config . responseType == "arraybuffer" || config . responseType == "blob" ) {
386
+ if ( xhr . response instanceof ArrayBuffer ) {
387
+ respond . response = URL . createObjectURL ( new Blob ( [ xhr . response ] ) ) ;
388
+ } else {
389
+ respond . response = URL . createObjectURL ( xhr . response ) ;
390
+ }
391
+ setTimeout ( ( ) => {
392
+ URL . revokeObjectURL ( respond . response ) ;
393
+ } , 60e3 )
394
+ } else if ( config . responseType == "json" ) {
366
395
try {
367
- respond . response = JSON . parse ( xhr . responseText ) ;
396
+ respond . response = JSON . parse ( xhr . response ) ;
368
397
} catch ( e ) {
369
398
}
370
399
} else {
371
- if ( ! respond . response && ( config . responseType == "arraybuffer" || config . responseType == "blob" ) ) {
372
- if ( xhr . response instanceof ArrayBuffer ) {
373
- respond . response = URL . createObjectURL ( new Blob ( [ xhr . response ] ) ) ;
374
- } else {
375
- respond . response = URL . createObjectURL ( xhr . response ) ;
376
- }
377
- setTimeout ( ( ) => {
378
- URL . revokeObjectURL ( respond . response ) ;
379
- } , 60e3 )
380
- } else {
381
- respond . response = xhr . response ;
382
- }
400
+ respond . response = xhr . response ;
383
401
}
384
402
try {
385
403
respond . responseText = xhr . responseText ;
386
404
} catch ( e ) {
387
-
388
405
}
389
406
}
390
407
return respond ;
@@ -432,7 +449,6 @@ export class BackgroundGrant {
432
449
433
450
let xhr = new XMLHttpRequest ( ) ;
434
451
xhr . open ( config . method || 'GET' , config . url , true , config . user || '' , config . password || '' ) ;
435
- xhr . responseType = config . responseType || '' ;
436
452
config . overrideMimeType && xhr . overrideMimeType ( config . overrideMimeType ) ;
437
453
438
454
let _this = this ;
@@ -502,7 +518,7 @@ export class BackgroundGrant {
502
518
xhr . setRequestHeader ( "X-Cat-" + this . rand + "-Cookie" , config . cookie ) ;
503
519
}
504
520
if ( config . anonymous ) {
505
- xhr . setRequestHeader ( "X-Cat-" + this . rand + "-Anonymous" , "true" )
521
+ xhr . setRequestHeader ( "X-Cat-" + this . rand + "-Anonymous" , "true" ) ;
506
522
}
507
523
if ( config . overrideMimeType ) {
508
524
xhr . overrideMimeType ( config . overrideMimeType ) ;
0 commit comments