我希望收集 HTTP 请求的正文,包括页面重定向到其他地方的时间。显然,我可以使用非 Fetch 域机制,例如Network.getResponseBody. 这对于重定向链中的“最终”页面效果很好,但不能用于中间页面,因为 Chrome 在转到下一个重定向目标时似乎会转储内容。
因此,我实现了(使用 PHP,但其细节无关紧要,正如您将看到的)。此方法调用不会返回任何错误。然后执行 a 后,我等待一个包含 Members 的事件,然后发送 a (使用来自 的),我得到的响应取决于页面本身的实际响应是什么。因此,对于 a ,我得到一个响应正文(万岁),但对于 30x (等),我总是得到带有消息的错误代码。现在,发出该错误消息与事件数据不一致(在我看来),即使 Chrome DevTools 协议 (CDP) 无意捕获 HTTP 重定向页面的主体。顺便说一句,内容触发重定向(通过 META 元素或 JavaScript)的页面可以正常捕获,我认为是因为它们返回 200 状态代码。Fetch.enable( { patterns: [ { requestStage: Response } ] } )Page.navigateFetch.requestPausedrequestIdresponseStatusCoderesponseHeadersFetch.getResponseBodyrequestIdFetch.requestPaused200301302-32000"Can only get response body on requests captured after headers received"Fetch.requestPaused
那么,问题出在我正在跟踪的调用序列中,还是在返回的错误消息中,Fetch.getResponseBody我是否正确地假设 CDP 无意捕获重定向链中的文档主体(显然,除了最后一个)?