diff --git a/src/web/traceViewer/ui/networkResourceDetails.tsx b/src/web/traceViewer/ui/networkResourceDetails.tsx index 2e444fed59..b8614efb7b 100644 --- a/src/web/traceViewer/ui/networkResourceDetails.tsx +++ b/src/web/traceViewer/ui/networkResourceDetails.tsx @@ -19,6 +19,7 @@ import * as React from 'react'; import { Expandable } from './helpers'; import { NetworkResourceTraceEvent } from '../../../trace/traceTypes'; +const utf8Encoder = new TextDecoder('utf-8'); export const NetworkResourceDetails: React.FunctionComponent<{ resource: NetworkResourceTraceEvent, @@ -28,7 +29,7 @@ export const NetworkResourceDetails: React.FunctionComponent<{ }> = ({ resource, index, selected, setSelected }) => { const [expanded, setExpanded] = React.useState(false); const [requestBody, setRequestBody] = React.useState(null); - const [responseBody, setResponseBody] = React.useState(null); + const [responseBody, setResponseBody] = React.useState(null); React.useEffect(() => { setExpanded(false); @@ -38,12 +39,14 @@ export const NetworkResourceDetails: React.FunctionComponent<{ React.useEffect(() => { const readResources = async () => { if (resource.requestSha1 !== 'none') { - const requestResource = await fetch(`/sha1/${resource.requestSha1}`).then(response => response.text()); + const response = await fetch(`/sha1/${resource.requestSha1}`); + const requestResource = await response.text(); setRequestBody(requestResource); } if (resource.responseSha1 !== 'none') { - const responseResource = await fetch(`/sha1/${resource.responseSha1}`).then(response => response.text()); + const response = await fetch(`/sha1/${resource.responseSha1}`); + const responseResource = await response.arrayBuffer(); setResponseBody(responseResource); } }; @@ -108,8 +111,8 @@ export const NetworkResourceDetails: React.FunctionComponent<{ {resource.requestSha1 !== 'none' ?
{formatBody(requestBody, requestContentType)}
: ''}

Response Body

{resource.responseSha1 === 'none' ?
Response body is not available for this request.
: ''} - {responseBody !== null && resource.contentType.includes('image') ? : ''} - {responseBody !== null && !resource.contentType.includes('image') ?
{formatBody(responseBody, resource.contentType)}
: ''} + {responseBody !== null && resource.contentType.includes('image') ? : ''} + {responseBody !== null && !resource.contentType.includes('image') ?
{formatBody(utf8Encoder.decode(responseBody), resource.contentType)}
: ''} }/> ;