使用Chrome开发者工具发出HTTP请求

leo*_*ojh 159 google-chrome google-chrome-devtools

有没有办法在不使用像POSTER这样的插件的情况下使用Chrome开发者工具发出HTTP请求?

apr*_*cot 140

如果您要编辑并重新发出已在Chrome开发者工具的"网络"标签中捕获的请求,请执行以下操作:

  • 右键单击Name请求
  • 选择 Copy > Copy as cURL
  • 粘贴到命令行(命令包括cookie和标题)
  • 根据需要编辑请求并运行

在此输入图像描述

  • Firefox允许您在重放之前编辑调用,但chrome中没有这样的选项,因此上面的答案是可行的方法 (10认同)
  • [Copy as fetch](https://bugs.chromium.org/p/chromium/issues/detail?id=573371) 允许直接从 Chrome 开发工具控制台重新发出更改后的请求,对于那些没有权限的人来说是可行的替代方案cURL 或想要打扰它。 (8认同)
  • @RaviParekh 我不认为他指的是 Chrome 控制台,他指的是操作系统命令行 (3认同)
  • 但使用curl,有时结果并不一样。我来这里是为了知道我是否可以从浏览器请求。使用浏览器的 javascript。它允许我重现 CORS 问题,我的终端的卷曲不应该让我明白。 (3认同)
  • 对于chrome 63+,无法在控制台中粘贴CURL。 (2认同)

Chr*_*son 122

由于Chrome(以及大多数其他浏览器)都支持Fetch API,因此现在很容易从devtools控制台发出HTTP请求.

获取 JSON文件,例如:

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(res => res.json())
  .then(console.log)
Run Code Online (Sandbox Code Playgroud)

或者POST一个新资源:

fetch('https://jsonplaceholder.typicode.com/posts', {
  method: 'POST',
  body: JSON.stringify({
    title: 'foo',
    body: 'bar',
    userId: 1
  }),
  headers: {
    'Content-type': 'application/json; charset=UTF-8'
  }
})
.then(res => res.json())
.then(console.log)
Run Code Online (Sandbox Code Playgroud)

Chrome Devtools实际上也支持新的异步/等待语法(即使等待通常只能在异步函数中使用):

const response = await fetch('https://jsonplaceholder.typicode.com/posts/1')
console.log(await response.json())
Run Code Online (Sandbox Code Playgroud)

请注意,您的请求将受到同源策略的约束,就像浏览器中的任何其他HTTP请求一样,因此要么避免跨源请求,要么确保服务器设置允许您请求的CORS标头.

使用插件(旧答案)

作为以前发布的建议的补充,我发现Chrome 的Postman插件工作得非常好.它允许您设置标头和URL参数,使用HTTP身份验证,保存您经常执行的请求等.

  • @Nuhman Fetch接受第二个参数,你可以配置请求`fetch("/ echo/json /",{method:"POST",body:data})` (6认同)
  • 请注意,也可以[复制为获取](https://bugs.chromium.org/p/chromium/issues/detail?id=573371)来自 Chrome 开发工具网络历史记录的任何请求。 (4认同)
  • 由于 op 使用 Postman 接受了一个答案:如果您右键单击开发工具中的请求并“复制为 cURL”,则可以将 cURL 命令导入 Postman 以重新发送/更改请求。请参阅:https://www.getpostman.com/docs/postman/collections/data_formats ->“作为 cURL 导入” (3认同)

tom*_*lue 29

我知道,老帖子......但是留在这里可能会有所帮助.

现代浏览器现在支持Fetch API.

你可以像这样使用它:

fetch("<url>")
    .then(data => data.json()) // could be .text() or .blob() depending on the data you are expecting
    .then(console.log); // print your data
Run Code Online (Sandbox Code Playgroud)

obs:它将进行所有CORS检查,因为它是一个改进的XmlHttpRequest.


sad*_*605 11

如果您的网页在您的网页中有jquery,那么您可以在chrome开发者控制台上进行编写:

$.get(
    "somepage.php",
    {paramOne : 1, paramX : 'abc'},
    function(data) {
       alert('page content: ' + data);
    }
);
Run Code Online (Sandbox Code Playgroud)

它的jquery方式做到了!

  • 这假设网页将使用jQuery (14认同)
  • 记住这只适用于'GET`请求,如果你想做其他类型的请求,你可能想要使用`$ .ajax` (2认同)

Kor*_*yem 8

扩展@dhfsk 答案

这是我的工作流程

  1. 在Chrome DevTools中,右键单击要处理的请求> Copy as cURL Chrome DevTools复制为cURL

  2. 开放邮递员

  3. 单击Import左上角,然后Paste Raw Text 从Chrome邮递员粘贴原始文本cURL

  • Chrome 浏览器不太好,导致我转而使用 Firefox 并成功使用“编辑和重新发送”功能!继续努力 Firefox/Mozilla 团队!!!! (2认同)

Nir*_*han 8

要使用标头的 GET 请求,请使用此格式。

   fetch('http://example.com', {
      method: 'GET',
      headers: new Headers({
               'Content-Type': 'application/json',
               'someheader': 'headervalue'
               })
    })
    .then(res => res.json())
    .then(console.log)
Run Code Online (Sandbox Code Playgroud)


Cra*_*tis 7

如果您想从同一个域执行POST,您可以使用Developer工具将表单插入DOM并提交:

将表格插入文件


小智 6

我很幸运地结合了上述两个答案。在 Chrome 中导航到该站点,然后在 DevTools 的网络选项卡上找到请求。右键单击请求并复制,但复制为 fetch而不是 cURL。您可以将提取代码直接粘贴到 DevTools 控制台中并进行编辑,而不是使用命令行。

  • 不要将它们称为“上面的两个答案”,因为在投票/投票时可能会改变 (5认同)