如何在 Chrome 扩展程序中破译 HTTP 响应主体
在浏览器开发中,访问 HTTP 响应主体可能会带来挑战,特别是在Chrome 扩展程序后台脚本。虽然可以使用“chrome.webRequest.onBeforeRequest”事件访问 HTTP 请求正文,但检索响应正文需要更复杂的方法。
一个潜在的解决方案,如引用的 Stack Overflow 线程“Chrome”中所述读取 HTTP 响应的扩展”涉及利用“chrome.devtools.network”API。通过将调试器附加到当前选项卡并在调试器中启用网络,就可以侦听“Network.responseReceived”事件。触发此事件时,您可以使用“chrome.debugger.sendCommand”方法检索特定请求 ID 的响应正文。
以下是演示此方法的示例代码片段:
<code class="javascript">var currentTab; var version = "1.0"; chrome.tabs.query( { currentWindow: true, active: true }, function(tabArray) { currentTab = tabArray[0]; chrome.debugger.attach({ tabId: currentTab.id }, version, onAttach.bind(null, currentTab.id)); } ); function onAttach(tabId) { chrome.debugger.sendCommand({ tabId: tabId }, "Network.enable"); chrome.debugger.onEvent.addListener(allEventHandler); } function allEventHandler(debuggeeId, message, params) { if (currentTab.id != debuggeeId.tabId) { return; } if (message == "Network.responseReceived") { chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, "Network.getResponseBody", { "requestId": params.requestId }, function(response) { // You get the response body here! // You can close the debugger tips by: chrome.debugger.detach(debuggeeId); }); } }</code>
此方法相当全面,提供对响应标头和响应正文本身的访问。但是,它确实涉及创建调试器会话并将其附加到当前选项卡,这可能会引入额外的复杂性或性能考虑因素。
以上是如何在 Chrome 扩展程序中访问 HTTP 响应正文?的详细内容。更多信息请关注PHP中文网其他相关文章!