DevTools: 在网络服务中解码压缩响应体
Moderate
提交哈希:
8168a4edfb36e1ef628675d49b6e5e101a283c8d
提交时间: 2025-07-23 10:44:52+00:00
影响等级: Moderate
生成工具: webview2-upstream-sentry
上游审核链接:
查看上游审核 🔗
📋 摘要
本次提交为DevTools增加了在网络服务中解码压缩响应体的机制。当启用RendererSideContentDecoding时,调用Fetch.getResponseBody会返回原始压缩的响应体,但这不是用户期望的行为。此变更引入了一种在网络服务进程中解码响应体的机制,确保DevTools接收到解压缩的内容,同时遵循进程边界和安全沙箱规则。实现包括:1) 新增NetworkService::DecodeContentEncoding Mojo方法,接收编码数据流并返回解码后的数据流,将解码逻辑安全地保留在网络服务沙箱内;2) 对应的客户端辅助函数ContentDecodingInterceptor::DecodeOnNetworkService,简化新Mojo API的调用;3) 更新DevToolsURLLoaderInterceptor以在遇到client_side_content_decoding_types响应时使用新的辅助函数;4) 添加新的Web测试验证Fetch.getResponseBody正确返回gzip响应的解压缩内容。
🎯 影响分析
对终端用户:当使用Chrome DevTools检查网络请求时,现在能够正确查看压缩响应(如gzip、deflate等)的解压缩内容,而不是看到原始的压缩二进制数据。这提升了开发者调试体验,特别是在检查API响应内容时更加直观和有用。对开发者:1) Web开发者在使用DevTools时将获得更好的调试体验,可以直接查看压缩响应的实际内容;2) 使用Fetch API的DevTools扩展和自动化测试工具将能够正确获取解压缩的响应体内容;3) 此变更确保了RendererSideContentDecoding功能与DevTools的兼容性,不会影响现有的网络请求性能;4) 为需要在浏览器进程中处理解压缩内容的其他组件(如下载、签名交换)提供了统一的解决方案。此变更主要影响调试和开发体验,对生产环境的网络性能没有负面影响。
受影响的类:
DevToolsURLLoaderInterceptor
NetworkService
ContentDecodingInterceptor
Interceptor