使用Chrome Developer工具发出HTTP请求


206

有没有一种方法可以使用Chrome Developer工具发出HTTP请求而无需使用POSTER之类的插件?


1
您是否希望跨域或在打开开发人员工具的同一域中发出请求?
卢卡斯

6
对于所有的人都希望这个功能-星铬问题:code.google.com/p/chromium/issues/...
伊万Zuzak

1
所有这些都是有用的答案,只是想添加一个我觉得非常有用的工具Advanced Rest Client。如果一个人要发出多个API请求,那么从长远来看,使用它可以帮助节省很多时间。
Sagar Ranglani

6
Firefox是一个更好的选择。只需右键单击该请求,然后重新发送或编辑并重新发送。
eusoubrasileiro

@eusoubrasileiro:谢谢。Firefox的“网络”标签中的“编辑并重新发送”按钮可以重新发送请求,这确实是一个不错的功能。希望有人提出要求也将其添加到Chrome中
firstpostcommenter

Answers:


186

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

GET例如一个JSON文件:

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

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)

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

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

请注意,您的请求将遵循同源策略,就像浏览器中的任何其他HTTP请求一样,因此请避免跨源请求,或者确保服务器设置允许您请求的CORS标头。

使用插件(旧答案)

除了以前发布的建议之外,我发现Chrome 的Postman插件可以很好地工作。它允许您设置标题和URL参数,使用HTTP身份验证,保存您经常执行的请求等。


3
由于操作员使用Postman接受了答案:如果在dev-tools中右键单击请求,然后单击“复制为cURL”,则可以将cURL命令导入Postman以重新发送/更改请求。请参阅:getpostman.com/docs/postman/collections/data_formats- >“作为cURL导入”
dhfsk

1
如何发出发帖请求?
纳曼

7
@Nuhman Fetch使用第二个参数,您可以在其中配置请求fetch("/echo/json/", { method: "POST", body: data })
Christofer Eliasson

1
请注意,也可以将复制后的内容从Chrome Dev Tools网络历史记录中提取出来。
瓦齐姆

1
@mathtick mode您可以使用一个请求选项:fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }。请注意,模式:“ no-cors”仅在请求中允许一组有限的标头。有关使用获取和无芯的更多信息
Christofer Eliasson

154

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

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

在此处输入图片说明


11
Firefox允许您在重播前编辑呼叫,但是chrome中没有这样的选项,所以上面的答案是解决方法
Tofeeq

3
对于chrome 63+,无法在控制台中粘贴CURL。
拉维·帕雷克

2
@RaviParekh我认为他不是Chrome控制台,而是操作系统命令行
Korayem

4
复制为提取功能允许直接从Chrome Dev Tools控制台重新发出更改的请求,对于那些没有cURL或不想使用它的人来说,它是可行的选择。
Vadzim

1
但是使用curl时,有时结果是不一样的。我来这里是为了知道是否可以从浏览器请求。使用浏览器的javascript。它使我能够重现CORS问题,终端发出的卷曲不应该使我感到惊讶。
Garry Dias

32

我知道,以前的帖子...但是将其留在此处可能会有所帮助。

现代浏览器现在支持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

ps:它将进行所有CORS检查,因为它已经得到了改进XmlHttpRequest


13

如果您的网页中包含jquery,则可以在chrome开发人员控制台上编写该代码:

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

它的jQuery方式!


14
假设网页将使用jQuery
mikemaccana 2014年

2
请记住,这仅用于GET请求,如果您要执行其他类型的请求,则可能要使用$.ajax
aksu

@mikemaccana您可以通过控制台将jQuery加载到任何页面中。
nehem

1
这样var script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
nehem

1
@itsneo的答案是当场!如果正在访问的页面尚没有jquery,则加载jquery的方法。然后,您可以使用$ .ajax或等效版本,而无需插件
Renato Chencinski

12

扩展@dhfsk 答案

这是我的工作流程

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

  2. 开放邮递员

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


4

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


3
不要将它们称为“以上两个答案”,因为在投票时可能会改变
Urosh T.19.01.19

4

要获取带有标题的请求,请使用此格式。

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

2

如果您在网站上使用jquery,则可以在控制台中使用类似的内容

$.post(
    'dom/data-home.php',
    {
    type : "home", id : "0"
    },function(data){
        console.log(data)
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


1

简而言之,如果您希望请求使用与您正在查看的页面相同的浏览上下文,则可以在Chrome控制台中执行以下操作:

window.location="https://www.example.com";

1

$.post(
    'dom/data-home.php',
    {
    type : "home", id : "0"
    },function(data){
        console.log(data)
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


1
您应该解释您的答案,而不仅仅是发布一些随机代码。
雅各布·穆达
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.