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

How to manually send HTTP POST requests from Firefox or Chrome browser

提问人:Pascal Klein 提问时间:1/26/2011 最后编辑:Peter MortensenPascal Klein 更新时间:2/1/2023 访问量:1957317

问:

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

Chrome 和/或 Firefox 中是否缺少任何功能?

ajax google-chrome firefox 浏览器 http-post

评论

25赞 FearlessFuture 3/16/2017
在 Chrome 控制台中进行 AJAX 调用。无需扩展。这是发出 POST 请求的好方法,无需获取身份验证 cookie。$.post('/resource/path/')
12赞 Shayne 6/16/2017
虽然添加是必要的,但关闭是胡说八道。他要求在chrome或firefox中提供功能,或者如果它需要一个插件。它可能需要指定或未指定的插件不是重点
35赞 Gangnus 12/5/2017
帖子被错误地关闭了。它不要求工具,而是要求作者已经在使用的工具中的功能。这样,我们必须关闭有关如何在某些工具上执行此操作或执行该操作的所有问题 - 这将是 SO 的十分之一。
13赞 jurl 3/26/2018
我在Firefox上注意到了这个功能,当你打开网络选项卡并选择一个随机请求时,你可以这样做,这很酷。Edit and Resend
4赞 Benny Code 2/19/2019
在现代浏览器中,您可以使用 Fetch API,它允许您轻松地从 JavaScript 开发人员控制台执行 POST 请求。我更喜欢这个,因为您不需要安装第三方扩展程序,尤其是在发布敏感数据(如密码)时,建议不要依赖外部软件。以下是如何使用 Fetch API 的代码片段: gist.github.com/bennyn/ed95ed9edd6ce0d04e7c8d6e6eb1a1f8

答:

5赞 Ceres 1/26/2011 #1

您还可以使用 WatirWatiN 来自动化浏览器。Watir 是为 Ruby 编写的,而 Watin 是为 .NET 语言编写的。不过,我不确定这是否是您要找的。

18赞 Nate 1/24/2012 #2

下面是适用于 Chrome 的高级 REST 客户端扩展。

它对我来说效果很好 - 请记住,您仍然可以使用它的调试器。“网络”窗格特别有用;它将为您提供呈现的 JSON 对象和错误页面。

187赞 amra 2/9/2012 #3

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

HTTPie screenshot

CLI HTTP 客户端:

如果您坚持使用浏览器扩展程序,则:

火狐浏览器

评论

1赞 akostadinov 8/27/2013
还有资源测试插件 addons.mozilla.org/en-us/firefox/addon/http-resource-test
0赞 Richard 8/27/2014
海报最后更新 28/06/11 - Firefox 的更新意味着无法启动它
0赞 Ram 9/18/2014
@akostadinov我无法在Mozilla中使用资源测试插件,该工具在最新版本的Firefox的开发人员工具下没有出现(即使在安装和重新启动后)。
1赞 7heo.tk 7/9/2015
刚刚尝试过 REST Easy。当场卸载:该界面做了太多的手把手操作,并迫使用户进入僵化的用例。不利于 API 开发。
1赞 Diti 5/17/2021
我宁愿使用 curlie 而不是 HTTPie。 是基于更强大的。curliecurl
2782赞 Abhinav 3/15/2012 #4

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


Postman 现在还拥有适用于 Windows、Mac 和 Linux 的原生应用程序(即独立应用程序)!现在更可取的是使用本机应用程序,请在此处阅读更多内容。


评论

3赞 GP cyborg 2/2/2018
如果您想使用浏览器的 cookie、会话,请确保也安装 Postman 拦截器插件。
9赞 Gloweye 7/7/2021
工具可能很有用,但第三方应用程序无法回答这个问题,它要求通过 Chrome 或 Firefox 执行此操作。
5赞 Netsab612 9/16/2021
不幸的是,Postman 应用程序在空闲时会占用大量 RAM。当你只需要一个轻量级的应用程序来发送基本的HTTP请求,并最终进行一些授权时,这是一种耻辱。不过,这是一款出色的应用程序,具有良好的人体工程学。
147赞 Shahriar 12/21/2021
等。。。这个帖子是神圣的 🤯
28赞 akr_ 7/4/2022
正如我们所知,邮递员诞生了。
14赞 Johan Falk 10/25/2012 #5

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

RESTClient,用于 RESTful Web 服务的调试器

528赞 Arno 2501 6/1/2013 #6

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

评论

95赞 Jim Pivarski 1/8/2016
我对此投了赞成票,尽管这是对这个问题的错误回答:这是我需要知道的。
13赞 Vic Seedoubleyew 4/25/2016
它不符合整个目的,因为它无法附加浏览器中已经设置的 cookie。例如,您可能希望手动登录网站,然后发送发布请求。使用 curl,如果登录过程是用 javascript 处理的,这将是一个巨大的痛苦
0赞 Daniel W. 3/3/2020
这对我不起作用,我不能在 OSX 上使用带有 zsh 和 bash 的单引号,shell 正在进入模式。我需要使用quote>-d "{\"..
0赞 RAM237 10/4/2020
是的,太棒了,你几乎总是已经在 Unix 上安装了它,而且它对 Windows 来说真的很轻量级。无需注册或短信!;)curl
4赞 C.M. 10/28/2021
Windows cmd.exe 也不喜欢单引号,所以对于我的 POST,我使用了: curl -i -X POST -H “内容类型: 应用程序/json” -d “{\”名称\“: \”新项目\“, \”年份\“: 2009}” 本地主机:60524
48赞 Nathan Osman 11/10/2013 #7

在受到 Postman for Chrome 的启发后,我决定为 Firefox 编写类似的东西。

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

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

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

评论

2赞 galmok 4/1/2014
看起来不错,但缺乏完全控制请求正文的能力。目前,它提供了键/值功能,但完全控制帖子正文会很好。
0赞 Dennis 10/15/2014
PUT 和 DELETE 支持会赢得我的青睐。否则看起来不错。
1赞 Nathan Osman 12/11/2014
@Pacerier:这是我目前正在开发的一个功能,大约完成了 90%。希望它能在今年年底前发布。似乎确实有积压的插件被Mozilla批准。
2赞 Nathan Osman 12/24/2014
经过一个多月的等待,新版本已经获得批准。PUT 和 DELETE 支持已经到来!在那个月里,我还做了大量其他的新更改,这些更改将很快出现在下一个版本中。(希望这次能早点获得批准。
5赞 rugk 3/12/2019
这似乎不再可用了。(它可能不是 WebExtension,因此与 Firefox >= 57 不兼容。此问题在此处跟踪:github.com/nathan-osman/REST-Easy/issues/78
1赞 bobbyrne01 7/20/2014 #8

查看 Firefox 的 http-tool...

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

特征:

  • 获取
  • 发布
  • 删除

将标头添加到请求。
将正文内容添加到请求中。

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

评论

3赞 rugk 3/12/2019
这似乎不再可用了。(它可能不是 WebExtension,因此与 Firefox >= 57 不兼容。
0赞 Peter Mortensen 7/20/2021
链接(有效地)断开了:“哎呀!我们找不到那个页面”
328赞 0fnt 11/11/2014 #9

火狐浏览器

在“开发人员工具”中打开“网络”面板,方法是按 或转到“菜单栏”-“>工具”->“Web 开发人员”-“>网络”。选择与请求对应的行。Ctrl+Shift+E

较新的版本

在最右侧查找重新发送按钮。然后,一个新的编辑表单将在左侧打开。编辑它。

旧版本

然后单击右上角的小门图标(在屏幕截图中以展开形式显示,您会在突出显示的标题的左侧找到它),第二行(如果您没有看到它,请重新加载页面)->编辑并重新发送您想要的任何请求

Firefox Dev Tools with button "Edit and Resent" highlighted

POST request body highlighted

评论

3赞 Coldblackice 3/30/2015
这个功能对其他人来说坏了吗?编辑“查询字符串”框中的参数时,在更改单个字符后,它拒绝进一步更改请求。除此之外,唯一的方法是编辑整个 URL/请求(这很困难,因为它们都混在一起了)
1赞 Dima Lituiev 5/17/2021
这在当前版本的 Chrome 中不起作用
1赞 youcantexplainthat 5/21/2021
@dima-lituiev,上面的屏幕截图是针对Firefox的,我已经确认它在firefox版本88.0.1中有效
3赞 Jeff82 5/25/2021
我还确认它在 Firefox 88.0.1 中有效 - 但是,就我而言,“编辑并重新发送”按钮没有显示。我必须右键单击请求,然后单击“在网络面板中打开”。从那里,我可以单击右上角的“重新发送”下拉列表,然后选择“编辑并重新发送”。感谢这个解决方案在多年后仍然强大。您甚至可以选择为请求创建一个 fetch() 命令,以便在控制台中使用,就像 OP 最初请求的那样。
1赞 Ambuj Mani Tripathi 12/12/2022
在最新版本的Firefox中,只有“Resend”而不是“Edit & Resend!.我花了 5 分钟才弄清楚没有其他按钮可以编辑它。
29赞 dumbledad 1/21/2015 #10

您特别要求“Chrome 和/或 Firefox 中的扩展或功能”,您已经收到的答案提供了这些内容,但我确实喜欢 oezi 对封闭问题“如何使用 Web 浏览器发送 POST 请求”的简单回答,以获得简单的参数。oezi 说道:

使用表单,只需将method"post"

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

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

评论

0赞 Michele Piccolini 6/23/2021
对于那些不知道的人,我将添加:您指定的内容是您要获取的资源(可以包括 GET 样式的查询参数),并指定 POST 的数据正文。F.D.(英语:F.D.) 并将向 发出 POST 请求,其正文为 .actionvalueaction="api/ids?name=John"value="hello"<hostname>/api/ids?name=Johnhello
3赞 Bennett Brown 4/3/2015 #11

试试 Runscope。https://www.hurl.it/ 提供免费的工具样品服务。

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

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

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

评论

0赞 Darrel Miller 4/3/2015
Runscope 也有一个免费套餐,它每月的请求数量限制较低,而且只有 1 名团队成员。披露:我愿意:-)
10赞 Vineel 8/28/2015 #12

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

Fiddler web debugger

0赞 Khachatur 6/14/2020 #13

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

5赞 AnhellO 9/11/2020 #14

自 Postman 兴起以来,还有其他一些客户诞生,这里值得一提:

23赞 ShayD 12/25/2020 #15

我认为 Benny NeugebauerOP 关于 Fetch API 的问题的评论应该在这里作为答案呈现,因为 OP 正在寻找 Chrome 中手动创建 HTTP POST 请求的功能,而这正是 fetch 命令的作用。

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

// 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 控制台上,以后可以使用。

按 ,在控制台选项卡中编写命令(如果您以前使用过,则按向上键),然后按 ,查看它处于待处理状态并返回响应,这使其对简单的 POST 请求测试非常有用。F12Enter

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

评论

1赞 Steve In CO 1/29/2021
当我有一个应用程序陷入无法清除的不良状态时,这非常适合“解开”,因为错误使 UI 保持锁定状态。让用户再次运行,直到错误得到解决。
0赞 user3067860 3/19/2021
就像@SteveInCO一样,我需要一种原生的 Chrome 方法,作为紧急措施,让我的用户(除了 Chrome 之外没有任何东西可用)才能摆脱困境。(尽管我使用大多数其他工具进行日常使用。
1赞 Niraj Motiani 3/11/2022 #16

我尝试使用邮递员应用程序,遇到了一些身份验证问题。 如果您必须仅使用浏览器执行此操作,请转到网络选项卡,右键单击通话,说编辑并发送响应。这里有一个关于 Firefox 的类似 ans,这个右键单击对我有用,并且非常确定它也适用于 chrome

评论

0赞 schmiddy98 3/24/2023
该选项在 Edge 中可用,但在 Chrome 中不可用。
1赞 Jay Day Zee 4/11/2022 #17

因此,在我看来,您可以使用控制台,创建一个函数,然后轻松地从控制台发送请求,该控制台将具有正确的cookie等。

所以我只是从这里抓住了这个:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#supplying_request_options

// Example POST method implementation:
async function postData(url = '', data = {}, options = {}) {
  // Default options are marked with *
let defaultOptions = {
    method: 'POST', // *GET, POST, PUT, DELETE, etc.
    mode: 'cors', // no-cors, *cors, same-origin
    cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
    credentials: 'same-origin', // include, *same-origin, omit
    headers: {
      'Content-Type': 'application/json'
      // 'Content-Type': 'application/x-www-form-urlencoded',
    },
    redirect: 'follow', // manual, *follow, error
    referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
    body: JSON.stringify(data) // body data type must match "Content-Type" header
  }

// update the default options with specific options (e.g. { "method": "GET" } )
const requestParams = Object.assign(defaultOptions, options);

const response = await fetch(url, requestParams);
  return response.text(); // displays the simplest form of the output in the console. Maybe changed to response.json() if you wish
}

如果你想发出 GET 请求,你可以把它们放在你的浏览器地址栏中!

如果将其粘贴到控制台中,则可以通过重复调用函数来发出 POST 请求,如下所示:

postData('https://example.com/answer', { answer: 42 })
  .then(data => {
    console.log(data); // you might want to use JSON.parse on this
  });

服务器输出将打印在控制台中(以及“网络”选项卡中提供的所有数据)

此函数假定您正在发送 JSON 数据。如果不是,则需要对其进行更改以满足您的需求

1赞 Cassiterite 7/3/2022 #18

Windows CLI 解决方案

在 PowerShell 中,可以使用 Invoke-WebRequest。示例语法:

Invoke-WebRequest -Uri http://localhost:3000 -Method POST -Body @{ username='clever_name', password='hunter2' } -UseBasicParsing

在没有 Internet Explorer 的系统上,需要该标志。-UseBasicParsing

4赞 Adeptus 2/1/2023 #19

这个问题现在已经有 12 年了,很容易理解为什么作者当时要求 Firefox 或 Chrome 的解决方案。不过,12年后,还有其他浏览器,不涉及任何附加组件或其他工具的最佳浏览器是Microsoft Edge

只需打开 devtools (F12),然后打开“网络控制台”选项卡(而不是“网络”或“控制台”选项卡,单击“+”号并将其打开(如果不可见)。

这是官方指南:https://learn.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/network-console/network-console-tool

玩得愉快!