@@ -13,35 +13,43 @@ const {
1313  kResourceType, 
1414  getMonotonicTime, 
1515  getNextRequestId, 
16+   sniffMimeType, 
1617}  =  require ( 'internal/inspector/network' ) ; 
1718const  dc  =  require ( 'diagnostics_channel' ) ; 
1819const  {  Network }  =  require ( 'inspector' ) ; 
19- const  {  MIMEType }  =  require ( 'internal/mime' ) ; 
2020
2121const  kRequestUrl  =  Symbol ( 'kRequestUrl' ) ; 
2222
2323// Convert a Headers object (Map<string, number | string | string[]>) to a plain object (Map<string, string>) 
2424const  convertHeaderObject  =  ( headers  =  { } )  =>  { 
2525  // The 'host' header that contains the host and port of the URL. 
2626  let  host ; 
27+   let  charset ; 
28+   let  mimeType ; 
2729  const  dict  =  { } ; 
2830  for  ( const  {  0 : key ,  1 : value  }  of  ObjectEntries ( headers ) )  { 
29-     if  ( key . toLowerCase ( )  ===  'host' )  { 
31+     const  lowerCasedKey  =  key . toLowerCase ( ) ; 
32+     if  ( lowerCasedKey  ===  'host' )  { 
3033      host  =  value ; 
3134    } 
35+     if  ( lowerCasedKey  ===  'content-type' )  { 
36+       const  result  =  sniffMimeType ( value ) ; 
37+       charset  =  result . charset ; 
38+       mimeType  =  result . mimeType ; 
39+     } 
3240    if  ( typeof  value  ===  'string' )  { 
3341      dict [ key ]  =  value ; 
3442    }  else  if  ( ArrayIsArray ( value ) )  { 
35-       if  ( key . toLowerCase ( )  ===  'cookie' )  dict [ key ]  =  value . join ( '; ' ) ; 
43+       if  ( lowerCasedKey  ===  'cookie' )  dict [ key ]  =  value . join ( '; ' ) ; 
3644      // ChromeDevTools frontend treats 'set-cookie' as a special case 
3745      // https://github.com/ChromeDevTools/devtools-frontend/blob/4275917f84266ef40613db3c1784a25f902ea74e/front_end/core/sdk/NetworkRequest.ts#L1368 
38-       else  if  ( key . toLowerCase ( )  ===  'set-cookie' )  dict [ key ]  =  value . join ( '\n' ) ; 
46+       else  if  ( lowerCasedKey  ===  'set-cookie' )  dict [ key ]  =  value . join ( '\n' ) ; 
3947      else  dict [ key ]  =  value . join ( ', ' ) ; 
4048    }  else  { 
4149      dict [ key ]  =  String ( value ) ; 
4250    } 
4351  } 
44-   return  [ host ,  dict ] ; 
52+   return  [ dict ,   host ,  charset ,   mimeType ] ; 
4553} ; 
4654
4755/** 
@@ -52,14 +60,15 @@ const convertHeaderObject = (headers = {}) => {
5260function  onClientRequestCreated ( {  request } )  { 
5361  request [ kInspectorRequestId ]  =  getNextRequestId ( ) ; 
5462
55-   const  {  0 : host ,  1 : headers  }  =  convertHeaderObject ( request . getHeaders ( ) ) ; 
63+   const  {  0 : headers ,  1 : host ,   2 :  charset  }  =  convertHeaderObject ( request . getHeaders ( ) ) ; 
5664  const  url  =  `${ request . protocol } ${ host } ${ request . path }  ; 
5765  request [ kRequestUrl ]  =  url ; 
5866
5967  Network . requestWillBeSent ( { 
6068    requestId : request [ kInspectorRequestId ] , 
6169    timestamp : getMonotonicTime ( ) , 
6270    wallTime : DateNow ( ) , 
71+     charset, 
6372    request : { 
6473      url, 
6574      method : request . method , 
@@ -95,16 +104,7 @@ function onClientResponseFinish({ request, response }) {
95104    return ; 
96105  } 
97106
98-   let  mimeType ; 
99-   let  charset ; 
100-   try  { 
101-     const  mimeTypeObj  =  new  MIMEType ( response . headers [ 'content-type' ] ) ; 
102-     mimeType  =  mimeTypeObj . essence  ||  '' ; 
103-     charset  =  mimeTypeObj . params . get ( 'charset' )  ||  '' ; 
104-   }  catch  { 
105-     mimeType  =  '' ; 
106-     charset  =  '' ; 
107-   } 
107+   const  {  0 : headers ,  2 : charset ,  3 : mimeType  }  =  convertHeaderObject ( response . headers ) ; 
108108
109109  Network . responseReceived ( { 
110110    requestId : request [ kInspectorRequestId ] , 
@@ -114,7 +114,7 @@ function onClientResponseFinish({ request, response }) {
114114      url : request [ kRequestUrl ] , 
115115      status : response . statusCode , 
116116      statusText : response . statusMessage  ??  '' , 
117-       headers :  convertHeaderObject ( response . headers ) [ 1 ] , 
117+       headers, 
118118      mimeType, 
119119      charset, 
120120    } , 
0 commit comments