如何从 Firefox 或 Chrome 浏览器手动发送 HTTP POST 请求

Posted

技术标签:

【中文标题】如何从 Firefox 或 Chrome 浏览器手动发送 HTTP POST 请求【英文标题】:How to manually send HTTP POST requests from Firefox or Chrome browser 【发布时间】:2011-06-15 09:57:11 【问题描述】:

我想在我正在开发的 Web 应用程序中测试一些 URL。为此,我想手动创建 HTTP POST 请求(这意味着我可以添加我喜欢的任何参数)。

Chrome 和/或 Firefox 中是否有我缺少的功能?

【问题讨论】:

在 Chrome 控制台中进行 AJAX 调用。无需扩展。这是一种无需获取身份验证 cookie 即可发出 POST 请求的好方法。 $.post('/resource/path/') 虽然添加是必要的,但关闭是无稽之谈。他要求使用 chrome 或 firefox 中的功能,或者是否需要插件。它可能需要指定或未指定的插件不是重点 帖子关闭不正确。它不要求工具,而是要求作者已经在使用的工具中的功能。这样,我们必须解决所有关于如何在某些工具上执行此操作或执行此操作的问题 - 这将是 SO 的十分之一。 当您打开 网络标签 并选择一个随机请求时,我注意到 Firefox 上的此功能,您可以Edit and Resend 它非常酷。 在现代浏览器中,您可以使用Fetch API,它让您可以轻松地从 javascript 开发者控制台发出 POST 请求。我更喜欢这个,因为您不需要安装第三方扩展,特别是在发布敏感数据(如密码)时,建议不要依赖外部软件。下面是一段代码 sn-p 如何使用 Fetch API:gist.github.com/bennyn/ed95ed9edd6ce0d04e7c8d6e6eb1a1f8 【参考方案1】:

我一直在为这种类型的东西制作一个名为 Postman 的 Chrome 应用程序。所有其他扩展似乎有点过时,所以我自己做了。它还具有许多其他功能,有助于在此处记录我们自己的 API。


Postman 现在还有适用于 Windows、Mac 和 Linux 的 native apps(即独立)!现在最好使用原生应用程序,阅读更多here。


【讨论】:

如果您想使用浏览器的 cookie、会话,请务必安装 Postman 拦截器插件。 POSTMAN CHROME IS DEPRECATED 您正在为开发者@abhinav 开发出色的工具和应用程序,谢谢 人们还可以找到 Postman here 的网页版。甚至不需要安装。 工具可能有用,但第 3 方应用程序无法回答问题,它要求通过 Chrome 或 Firefox 执行此操作。【参考方案2】:

CURL 是真棒做你想做的事!这是一个简单但有效的命令行工具。

REST 实现测试命令:

curl -i -X GET http://rest-api.io/items
curl -i -X GET http://rest-api.io/items/5069b47aa892630aae059584
curl -i -X DELETE http://rest-api.io/items/5069b47aa892630aae059584
curl -i -X POST -H 'Content-Type: application/json' -d '"name": "New item", "year": "2009"' http://rest-api.io/items
curl -i -X PUT -H 'Content-Type: application/json' -d '"name": "Updated item", "year": "2010"' http://rest-api.io/items/5069b47aa892630aae059584

【讨论】:

我对此表示赞同,尽管这是对问题的错误答案:这是我需要知道的。 它不适合整个目的,因为它不能附加浏览器中已经设置的 cookie。例如,您可能希望手动登录网站,然后发送发布请求。使用 curl,如果使用 javascript 处理登录过程,这将是一个巨大的痛苦 这对我不起作用,我不能在带有 zsh 和 bash 的 OSX 上使用单引号,shell 正在变成 quote> 模式。我需要使用-d "\".. 是的,curl 太棒了,你几乎总是已经在 Unix 上拥有它,而且它对于 Windows 来说真的是轻量级的。无需注册或短信! ;) Windows cmd.exe 也不喜欢单引号,所以对于我的 POST,我使用了: curl -i -X POST -H "Content-Type: application/json" -d "\ "名称\": \"新项目\", \"年份\": 2009" localhost:60524【参考方案3】:

火狐

通过按 Ctrl+Shift+E 或转到菜单栏 -> 工具 -> Web 开发人员 -> 网络,在开发人员工具中打开网络面板。然后点击右上角的小门图标(在屏幕截图中以展开形式,您会在突出显示的标题的左侧找到它),第二行(如果您没有看到它,请重新加载页面)-> 编辑和重新发送您想要的任何请求

【讨论】:

这个功能是否被其他人破坏了?在“查询字符串”框中编辑参数时,修改单个字符后,拒绝再修改请求。除此之外,唯一的方法是编辑整个 URL/请求(这很困难,因为它们都被挤在一起了) @Coldblackice 你能张贴截图或问题步骤记录器吗?我可以很好地编辑查询字符串。要添加一个新的查询字符串,我要么使用 &= 要么只是开始一个新行。要编辑,更改单个 k,v 或者我只是删除并重新开始。 这在当前版本的 Chrome 中不起作用 @dima-lituiev,上面的屏幕截图是针对 Firefox 的,我已经确认它在 Firefox 88.0.1 版中有效 我还确认它在 Firefox 88.0.1 中有效 - 但是,就我而言,“编辑并重新发送”按钮没有出现。我必须右键单击请求,然后单击“在网络面板中打开”。从那里,我可以单击右上角的“重新发送”下拉菜单,然后选择“编辑并重新发送”。这个解决方案在多年后变得强大,值得称赞。您甚至可以选择为其创建一个 fetch() 命令,以便在控制台中使用,就像 OP 最初请求的那样。【参考方案4】:

忘记浏览器并尝试 CLI。 HTTPie 是一个很棒的工具!

CLI HTTP 客户端:

HTTPie Curlie HTTP Prompt Curl wget

如果你坚持浏览器扩展,那么:

Chrome

Postman - REST Client(已弃用,now has a desktop program) Advanced REST client Talend API Tester - Free Edition

火狐

RESTClient

【讨论】:

还有资源测试插件addons.mozilla.org/en-us/firefox/addon/http-resource-test 海报最后更新时间 28/06/11 - Firefox 更新意味着无法启动它 @akostadinov 我无法在 mozilla 中使用资源测试插件,在最新版本的 firefox 的开发人员工具下,该工具不会出现(即使在安装和重新启动后)。 刚刚尝试过 REST Easy。现场卸载:界面需要过多的手动操作,迫使用户进入僵化的用例。不利于 API 开发。 我宁愿使用curlie 而不是HTTPie。 curlie 基于更强大的 curl【参考方案5】:

受到Postman for Chrome 的极大启发,我决定为 Firefox 写一些类似的东西。

REST Easy* 是一个无需重启的 Firefox 插件,旨在提供对请求的尽可能多的控制。该插件仍处于实验状态(它甚至还没有经过 Mozilla 审核),但开发进展顺利。

该项目是开源的,所以如果有人觉得有必要帮助开发,那就太棒了:https://github.com/nathan-osman/Rest-Easy

*http://addons.mozilla.org 提供的附加组件将始终略低于 GitHub 上提供的代码

【讨论】:

看起来不错,但缺乏完全控制请求正文的能力。目前,它提供键/值功能,但完全控制帖子正文会很好。 PUT 和 DELETE 支持会赢得我的青睐。否则看起来不错。 @Pacerier:这是我目前正在开发的一项功能,大约完成了 90%。希望它会在年底之前发布。似乎确实有积压的插件获得 Mozilla 批准。 经过一个多月的等待,新版本已经通过。 PUT 和 DELETE 支持已经到来!在那个月,我还进行了大量其他新更改,这些更改将很快出现在下一个版本中。 (希望这次能早点获得批准。) 这似乎不再可用。 (它可能不是 WebExtension,因此与 Firefox >= 57 不兼容。)在此处跟踪此问题:github.com/nathan-osman/REST-Easy/issues/78【参考方案6】:

您特别要求“Chrome 和/或 Firefox 中的扩展或功能”,您已经收到的答案提供了这些,但我确实喜欢 oezi's answer to the closed question "How can I send a POST request with a web browser?" 对于简单参数的简单性。 oezi 说:

使用表单,只需将method 设置为"post"

<form action="blah.php" method="post">
  <input type="text" name="data" value="mydata" />
  <input type="submit" />
</form>

即,为自己构建一个非常简单的页面来测试POST 操作。

【讨论】:

我会添加,对于那些不知道的人:您指定为action 的内容是您想要获取的资源(可以包括 GET 样式的查询参数),value指定 POST 的数据主体。例如。 action="api/ids?name=John"value="hello" 将向 &lt;hostname&gt;/api/ids?name=John 发出一个带有 hello 正文的 POST 请求。【参考方案7】:

这是 Chrome 的 Advanced REST Client 扩展程序。

它对我很有用——请记住,您仍然可以使用调试器。网络窗格特别有用;它会为您提供呈现的 JSON 对象和错误页面。

【讨论】:

【参考方案8】:

对于 Firefox,还有一个名为 RESTClient 的扩展非常好:

RESTClient, a debugger for RESTful web services

【讨论】:

【参考方案9】:

我认为关于 Fetch API 的 OP 问题上的 Benny Neugebauer's comment 应该在此处作为答案提供,因为 OP 正在 Chrome 中寻找手动创建 HTTP POST 请求的功能,而这正是 fetch 命令所做的.

有一个很好的简单的 Fetch API 示例here:

// Make sure you run it from the domain 'https://jsonplaceholder.typicode.com/'. (cross-origin-policy)
fetch('https://jsonplaceholder.typicode.com/posts',method: 'POST', headers: 'test': 'TestPost' )
  .then(response => response.json())
  .then(json => console.log(json))

fetch 命令的一些优点非常宝贵: 它简单、简短、快速、可用,甚至可以作为控制台命令存储在您的 chrome 控制台上,以后可以使用。

F12的简单性,在控制台选项卡中编写命令(如果您以前使用过,则按向上键)然后按Enter,看到它挂起并返回响应对于简单的 POST 请求测试非常有用。

当然,这里的主要缺点是,与 Postman 不同,这不会通过跨域策略,但我仍然发现它对于在本地环境或我可以启用 CORS 的其他环境中进行测试非常有用手动。

【讨论】:

当我有一个应用程序陷入无法清除的不良状态时,这非常有用,因为一个错误使 UI 保持锁定状态。让用户再次使用,直到可以解决错误。 和@SteveInCO 完全一样,我需要一个native Chrome 方法只是为了让我的用户(除了可用的Chrome 之外别无他法)作为紧急措施来解决问题. (尽管我将大多数其他工具用于我自己的日常使用。)【参考方案10】:

可能和浏览器没有直接关系,但Fiddler是另一个不错的软件。

【讨论】:

【参考方案11】:

您还可以使用Watir 或WatiN 来自动化浏览器。 Watir 是为 Ruby 编写的,而 Watin 是为 .NET 语言编写的。不过,我不确定它是否是您正在寻找的东西。

http://watin.sourceforge.net/ http://watir.com/

【讨论】:

【参考方案12】:

试试 Runscope。在https://www.hurl.it/ 上提供免费工具来试用他们的服务。

您可以设置方法、身份验证、标头、参数和正文。响应显示状态代码、标头和正文。响应正文可以从带有可折叠层次结构的 JSON 格式化。

付费帐户可以自动执行测试 API 调用并使用返回数据构建新的测试调用。

COI 披露:我与 Runscope 没有任何关系。

【讨论】:

Runscope 也有一个免费套餐,它只是每月请求的下限,并且只有 1 个团队成员。披露:我愿意:-)【参考方案13】:

查看 http-tool 的 Firefox...

针对需要调试 HTTP 请求和响应的 Web 开发人员。 在开发基于 REST 的 API 时非常有用。

特点:

获取 头 发布 放 删除

向请求添加标头。 为请求添加正文内容。

查看响应的标题。 查看响应的正文内容。 查看响应的状态码。 查看响应的状态文本。

【讨论】:

这似乎不再可用。 (它可能不是 WebExtension,因此与 Firefox >= 57 不兼容。) 链接(实际上)已损坏:“糟糕!我们找不到那个页面”【参考方案14】:

自 Postman 崛起以来诞生的其他一些客户在这里值得一提:

Insomnia:同时使用桌面应用程序和Chrome plugin Hoppscotch:以前称为 Postwoman,还有 Chrome plugin available。想搞笑也可以make it work locally with docker@ Paw: 如果你在 Mac 上 Advanced Rest Client:已经提到了Chrome plugin,但值得指出的是它还有一个桌面应用程序 soapUI:用 Java 编写并具有大量测试功能 Boomerang:另一种测试 API 的方法。它带有SOAP 集成,并且还具有Chrome plugin 可用 Thunder Client: 如果你使用 VS Code 作为你的文本编辑器,那么你应该去看看这个很棒的扩展

【讨论】:

【参考方案15】:

您可以使用ReqBin 直接从浏览器发布请求。 不需要插件或桌面应用程序。

【讨论】:

以上是关于如何从 Firefox 或 Chrome 浏览器手动发送 HTTP POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

在 Firefox/Chrome 上打开新标签页或窗口时,如何获得新的浏览器会话?

在 Firefox 或 Chrome 等浏览器上没有任何配置的情况下,如何在 OBIEE 12c 登录页面中忘记密码?

如何手动模拟 websocket 断开连接? (Firefox 或 Chrome 开发工具)

在 Chrome 或 Firefox 中从已关闭的 Web 应用程序发送桌面通知?

如何在我的 Chrome / Firefox 浏览器中查看 SQLite 数据库?

chrome谷歌浏览器如何导入或导出书签