我一直在寻找一种方法来改变一个XHR请求在我的浏览器,然后重新播放它。

假设我在浏览器中完成了一个完整的POST请求,我唯一想要更改的是一个小值,然后再播放一次。 如果直接在浏览器中完成,这将更容易、更快。

我在谷歌上搜索了一下,还没有找到在Chrome或Firefox中做到这一点的方法。

在这两种浏览器中是否有办法做到这一点?


当前回答

更新/完成zszep答案:

将请求复制为cUrl (bash)后,只需将其导入Postman App:

其他回答

5年过去了,这个基本的要求并没有被Chrome开发人员忽视。 虽然它们不像Firefox那样提供编辑数据的方法,但它们提供了完整的XHR回放。 这允许调试ajax调用。 “Replay XHR”会重复整个传输过程。

更新/完成zszep答案:

将请求复制为cUrl (bash)后,只需将其导入Postman App:

微软基于chromium的Edge支持网络选项卡中的“编辑和回放”请求,作为实验功能:

为了启用该选项,您必须“启用实验功能”。 Control+Shift+I (Windows, Linux)或Command+Option+I (macOS) ,并勾选“启用网络控制台”旁的复选框。

关于如何启用实验工具和该功能的更多细节可以在这里找到

有几种方法可以做到这一点,如上所述,但以我的经验,操作XHR请求和重新发送的最好方法是使用chrome开发工具复制请求为cURL请求(右键单击网络选项卡中的请求),并简单地导入到邮差应用程序(巨大的导入按钮在左上角)。

Chrome浏览器现在有Copy取回版本67:

复制为取回 右键单击一个网络请求,然后选择Copy > Copy As Fetch,将该请求的Fetch()等效代码复制到剪贴板。

https://developers.google.com/web/updates/2018/04/devtools#fetch

样例输出:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

不同的是,Copy as cURL也将包括所有的请求头(如Cookie和接受),适合在Chrome之外重播请求。fetch()代码适用于在同一浏览器中重播。