Chrome DevTools 如何知道不完整的 http 响应的内容大小

问题描述 投票:0回答:0

我得到了一个由 Chrome DevTools 导出的 har 文件。它显示了一个不完整的 http 响应,错误为

net::ERR_INCOMPLETE_CHUNKED_ENCODING
。不完整的 http 响应已传输 4096 字节。

 "content": {
        "size": 67469,
        "mimeType": "application/octet-stream",
        "compression": 63629
      },
      "redirectURL": "",
      "headersSize": 256,
      "bodySize": 3840,
      "_transferSize": 4096,
      "_error": "net::ERR_INCOMPLETE_CHUNKED_ENCODING"
    },

我的问题是 Chrome DevTools 如何知道 http 响应的内容大小为 67469 字节,因为响应是不完整的?

这里是Chrome DevTools的完整请求记录(敏感信息被替换):


{
    "_initiator": {
      "type": "script",
      "stack": {
        "callFrames": [1, 2, 3, 4],
        "parentId": {
          "id": "4",
          "debuggerId": "xxx.-xxx"
        }
      }
    },
    "_priority": "High",
    "_resourceType": "fetch",
    "cache": {},
    "connection": "24665",
    "request": {
      "method": "GET",
      "url": "http://www.example.com?hello=world",
      "httpVersion": "HTTP/1.1",
      "headers": [
        {
          "name": "Accept",
          "value": "*/*"
        },
        {
          "name": "Accept-Encoding",
          "value": "gzip, deflate"
        },
        {
          "name": "Accept-Language",
          "value": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"
        },
        {
          "name": "Cache-Control",
          "value": "no-cache"
        },
        {
          "name": "Connection",
          "value": "keep-alive"
        },
        {
          "name": "Cookie",
          "value": "..."
        },
        {
          "name": "Host",
          "value": "www.example.com"
        },
        {
          "name": "Pragma",
          "value": "no-cache"
        },
        {
          "name": "Referer",
          "value": "http://www.example.com/ref?hello=world"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50"
        }
      ],
      "queryString": [
        {
          "name": "hello",
          "value": "world"
        }
      ],
      "cookies": [1, 2, 3, 4],
      "headersSize": 2273,
      "bodySize": 0
    },
    "response": {
      "status": 200,
      "statusText": "OK",
      "httpVersion": "HTTP/1.1",
      "headers": [
        {
          "name": "Cache-Control",
          "value": "private"
        },
        {
          "name": "Content-Disposition",
          "value": "attachment;FileName=example.pdf"
        },
        {
          "name": "Content-Type",
          "value": "application/octet-stream"
        },
        {
          "name": "Date",
          "value": "Wed, 22 Feb 2023 17:10:05 GMT"
        },
        {
          "name": "Server",
          "value": "Microsoft-IIS/8.0"
        },
        {
          "name": "Transfer-Encoding",
          "value": "chunked"
        }
      ],
      "cookies": [],
      "content": {
        "size": 67469,
        "mimeType": "application/octet-stream",
        "compression": 63629
      },
      "redirectURL": "",
      "headersSize": 256,
      "bodySize": 3840,
      "_transferSize": 4096,
      "_error": "net::ERR_INCOMPLETE_CHUNKED_ENCODING"
    },
    "serverIPAddress": "1.1.1.1",
    "startedDateTime": "2023-02-22T17:10:08.836Z",
    "time": 130.23999985307455,
    "timings": {
      "blocked": 9.5169998755157,
      "dns": -1,
      "ssl": -1,
      "connect": -1,
      "send": 0.556,
      "wait": 66.90000020015239,
      "receive": 53.266999777406454,
      "_blocked_queueing": 3.2859998755156994,
      "_blocked_proxy": 0.8559999999999999
    }
  },

上面不完整的http是别人制作的。我尝试重现它但失败了。我组成了一个不完整的 http 响应,其中包含第一个块(块大小 CRLF 块数据 CRLF)并且没有最后一个块('0' CRLFCRLF)。 Chrome DevTools 显示:

          "content": {
            "size": 0,
            "mimeType": "application/octet-stream",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 280,
          "bodySize": 0,
          "_transferSize": 280,
          "_error": "net::ERR_INCOMPLETE_CHUNKED_ENCODING"

我的问题是 Chrome DevTools 如何知道 http 响应的内容大小为 67469 字节,因为响应是不完整的?

google-chrome google-chrome-devtools chunked-encoding http-content-length http-chunked
© www.soinside.com 2019 - 2024. All rights reserved.