编辑和重放XHR chrome/firefox等?

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

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

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

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

210679 次浏览

铬:

  • 在devtools的Network面板中,右键单击并选择复制为cURL
  • 粘贴/编辑请求,然后从终端发送它,假设你有curl命令

参见捕获:

enter image description here

或者,和以防你需要在网页的上下文中发送请求,选择Copy as fetch并编辑-从javascript控制台面板发送内容。

< br >

Firefox:

Firefox允许直接从Network面板编辑和重新发送XHR。下图来自Firefox 36:

enter image description here

我的两点建议:

  1. Chrome's邮递员插件 + 邮递员拦截插件。更多信息:邮差捕获请求文档

  2. 如果你用的是Windows,那么Telerik的Fiddler是一个选择。它有一个编码器选项来重放http请求,而且是免费的。

对于Firefox来说,这个问题自己解决了。它实现了“编辑和重发”功能。

对于Chrome 夯扩展似乎做的把戏。

Chrome现在有复制为取回版本67:

复制为取回

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

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"
});

不同之处在于复制为cURL也将包括所有的请求头(如Cookie和Accept),适合在Chrome之外重播请求。fetch()代码适用于在同一浏览器中重播。

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

更新/完成zszep回答:

将请求复制为cUrl (bash)后,只需将其导入邮递员的应用:

enter image description here

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

不需要安装第三方扩展!

存在< >强javascript代码< / >强,你可以添加当浏览器书签,然后在任何站点上激活它来跟踪&修改请求。它看起来是这样的:

enter image description here

如需进一步说明,请查看github页面。

微软chrome Edge支持“编辑和重放”;请求在网络标签作为一个实验功能:

enter image description here

为了启用该选项,您必须“启用实验功能”。
控制 + 转变 + (Windows、Linux)或命令 + 选项 + (macOS)

.选中“启用网络控制台”后的复选框

有关启用实验工具和该特性的更多详细信息,请访问在这里找到

可怕的请求

拦截,修改HTTP请求

修改响应示例