开发者社区 问答 正文

Chrome DevTools Protocol无法获取某些数据包,求助

20220520182543.png

如图所示,我遇到一些搞不懂的请求: - 左边有个小齿轮图标 - 详情里显示Provisional headers are shown

在Protocol monitor里,Network.requestWillBeSentNetwork.responseReceivedNetwork.loadingFinished都有显示,而且url和上面详情一致。 但是,当我通过websocket用Chrome DevTools Protocol进行监听,是无法接收到上面这3种动作的,只有Network.responseReceivedExtraInfo动作有响应。 如果用Fetch.requestPaused,是可以接收到动作的。 请问,这种请求是什么类型?那个小齿轮代表什么?为什么Network.requestWillBeSent等无法获取? 谢谢。

展开
收起
游客62vpaucpyniqe 2022-05-23 15:01:02 604 分享
分享
版权
举报
阿里云 AI 助理回答

根据您的描述,您在使用Chrome DevTools进行网络请求监控时遇到了一些不熟悉的场景,具体包括:

  1. 小齿轮图标:在网络请求列表中出现的小齿轮图标通常表示该请求具有额外的配置选项或者特定的请求头信息。这可能涉及到CORS(跨源资源共享)预检请求、自定义请求头等特殊设置。

  2. “Provisional headers are shown”提示:此提示意味着Chrome DevTools显示的是请求将要发送时的预期头部信息,而非实际发送出去的头部。这通常发生在请求被浏览器某种机制阻止或修改之前,比如扩展程序干预、页面重定向或是请求未实际发出的情况。

  3. Network Monitor中的事件差异

    • Network.requestWillBeSent, Network.responseReceived, Network.loadingFinished 未能捕获:这些事件代表了请求生命周期的关键阶段,从请求发起、收到响应到加载完成。如果通过WebSocket监听这些事件无响应,可能是因为WebSocket监听的方式或配置不正确,导致无法捕捉到这些标准的网络请求流程事件。
    • Network.responseReceivedExtraInfo 能接收到:这个事件提供响应接收后的额外信息,如headers的详细内容等,它与标准的请求-响应周期是分开的,因此即使其他事件未被捕获,此事件仍能触发。
    • Fetch.requestPaused 可以接收到动作:这是因为Fetch API提供了更底层的请求拦截和控制能力,允许开发者暂停、修改甚至取消fetch请求,因此在某些情况下能够捕获到其他监听方式遗漏的请求。
  4. 请求类型推测:鉴于上述情况,您遇到的请求可能是某种特殊类型的HTTP请求,如CORS预检请求(OPTIONS方法)、或者是由特定浏览器策略、扩展程序行为、页面脚本动态生成的请求等,这些请求可能因特定条件未完全满足而没有真正执行或被记录完整周期的事件。

综上所述,小齿轮图标指示请求包含特别配置,"Provisional headers"表明展示的是预期头部且请求可能未实际执行或被修改,而监听差异则可能源于监听机制或请求本身的特殊性。为准确调试,请检查是否有浏览器插件影响、确认请求是否符合预期的发送条件,并考虑调整监听策略或工具使用Fetch API来增强监控能力。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等