Google chrome devtools Chrome DevTools协议获取域-getResponseBody-显然在HTTP重定向时失败

Google chrome devtools Chrome DevTools协议获取域-getResponseBody-显然在HTTP重定向时失败,google-chrome-devtools,chrome-devtools-protocol,Google Chrome Devtools,Chrome Devtools Protocol,我希望收集HTTP请求的主体,包括当页面重定向到其他位置时。显然,我可以使用非获取域机制,例如。这对于重定向链中的“最终”页面很好,但不能用于中间页面,因为Chrome在转到下一个重定向目标时似乎会转储内容 因此,我实现了({patterns:[{requestStage:Response}]})(使用PHP,但其细节与此无关,您将看到)。此方法调用未返回任何错误。在执行之后,我等待一个包含成员requestId、responseStatusCode和responseHeaders的事件,然后发

我希望收集HTTP请求的主体,包括当页面重定向到其他位置时。显然,我可以使用非获取域机制,例如。这对于重定向链中的“最终”页面很好,但不能用于中间页面,因为Chrome在转到下一个重定向目标时似乎会转储内容

因此,我实现了
({patterns:[{requestStage:Response}]})
(使用PHP,但其细节与此无关,您将看到)。此方法调用未返回任何错误。在执行之后,我等待一个包含成员
requestId
responseStatusCode
responseHeaders
的事件,然后发送一个(使用
Fetch.requestPaused
中的
requestId
),我得到的响应取决于对页面本身的实际响应。因此,对于
200
,我得到了一个响应体(hurray),但是对于30x(
301
302
等),我总是得到错误代码
-32000
,消息是
“只能在收到头之后捕获请求时获得响应体”
。现在,发出该错误消息(在我看来)与
Fetch.requestPaused
事件数据不一致,即使Chrome DevTools协议(CDP)无意捕获HTTP重定向页面的主体。顺便说一句,带有内容触发重定向(通过元元素或JavaScript)的页面可以被捕获,我认为这是因为它们返回200个状态码


那么,问题是在我正在跟踪的调用序列中,还是在
Fetch.getResponseBody
返回的错误消息中?我是否正确地假设CDP不打算捕获重定向链中的文档体(显然,除了最后一个)?

getResponseBody显然希望请求处于暂停状态,但将重定向请求视为不同的请求(从技术上讲,AFAIK是不同的)。如果无法自动暂停重定向,那么它肯定看起来像CDP中的错误或架构缺陷。注意到在Chrom(ium)中,如果我打开DevTools并使用网络选项卡,响应预览窗格将显示“无响应数据”(或类似消息),这支持了架构缺陷的观点。有趣的是,Firefox也做了类似的事情。看起来我必须做一个cURL或类似的操作-不好意思,每个中间页面有两个请求:CDP中的原始请求和CurlgetResponseBooky中的第二个请求显然希望请求处于暂停状态,但将重定向请求视为不同的请求(从技术上讲,这是不同的AFAIK)。如果无法自动暂停重定向,那么它肯定看起来像CDP中的错误或架构缺陷。刚刚注意到,在Chrom(ium)中,如果我打开DevTools并使用网络选项卡,响应预览窗格将显示“无响应数据”(或类似消息)-这支持了这是架构缺陷的观点。有趣的是,Firefox做了类似的事情。看起来我必须做一个cURL或类似的-不好意思,每个中间页面有两个请求:CDP中的原始请求和cURL中的第二个请求