【问题标题】:Making HTTP Requests using Chrome Developer tools使用 Chrome 开发者工具发出 HTTP 请求
【发布时间】:2012-12-24 06:31:57
【问题描述】:

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

【问题讨论】:

  • 您是希望跨域还是在打开开发者工具的同一个域上发出请求?
  • 对于所有想要这个功能的人——给这个 Chromium 问题加注星标:code.google.com/p/chromium/issues/…
  • 都是有用的答案,只是想添加一个我觉得非常有用的工具Advanced Rest Client。如果要发出多个 API 请求,从长远来看,使用它可以帮助人们节省大量时间。
  • Firefox 是一个更好的选择。只需右键单击请求并重新发送或编辑并重新发送。
  • @eusoubrasileiro:谢谢。 Firefox 网络选项卡中的 Edit&Resend 按钮重新发送请求是非常好的功能。希望有人提出将其添加到 chrome 中的请求

标签: google-chrome google-chrome-devtools


【解决方案1】:

您可以在 Firefox 的 Inspector 中编辑/重新发送请求,而无需像这样使用任何 3rd 方:

  1. F12 在 Firefox 中打开检查器 ▶ 转到“网络”选项卡
  2. 找到您的 API 请求并单击它,“标题”部分将显示在右侧(您可以在顶部栏中进行过滤)
  3. “标题”选项卡带有一个重新发送按钮,您可以在此处重新发送或编辑并重新发送

Screenshot

【讨论】:

    【解决方案2】:

    是的,有一种方法不需要任何第三方扩展。

    我已经构建了javascript-snippet(您可以将其添加为浏览器书签),然后在任何站点上激活以监控和修改请求。 :

    有关更多说明,请查看 github 页面。

    【讨论】:

    【解决方案3】:

    我知道,旧帖子...但将其留在这里可能会有所帮助。

    Modern browsers 现在支持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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 你应该解释你的答案,而不仅仅是发布一些随机代码。
        【解决方案6】:

        由于 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 实际上也支持新的 async/await 语法(尽管 await 通常只能在 async 函数中使用):

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

        请注意,您的请求将受到 same-origin policy 的约束,就像浏览器中的任何其他 HTTP 请求一样,因此要么避免跨域请求,要么确保服务器设置允许您的 CORS 标头请求。

        使用插件(旧答案)

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

        【讨论】:

        • 由于操作使用 Postman 接受了答案:如果您在开发工具中右键单击请求并“复制为 cURL”,则可以将 cURL 命令导入 Postman 以重新发送/更改请求.请参阅:getpostman.com/docs/postman/collections/data_formats -> "导入为 cURL"
        • 如何发帖请求?
        • @Nuhman Fetch 接受第二个参数,您可以在其中配置请求 fetch("/echo/json/", { method: "POST", body: data })
        • 请注意,也可以 Copy as fetch 来自 Chrome 开发工具网络历史记录的任何请求。
        • @mathtick 您可以使用mode 请求选项:fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }。请注意,mode: "no-cors" 仅允许请求中包含一组有限的标头。 More info about using fetch and no-cors
        【解决方案7】:

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

        【讨论】:

        • 不要将它们称为“以上两个答案”,因为在投票/否决时可能会改变
        【解决方案8】:

        扩展@dhfsk answer

        这是我的工作流程

        1. 在 Chrome DevTools 中,右键单击要操作的请求 > Copy as cURL

        2. 打开邮递员

        3. 点击左上角的Import,然后点击Paste Raw Text

        【讨论】:

        • Chrome 浏览器不太好导致我转到 Firefox 并成功使用编辑和重新发送功能!!继续努力 Firefox/Mozilla 团队!!!!
        【解决方案9】:

        如果您想编辑并重新发出您在 Chrome 开发人员工具的“网络”选项卡中捕获的请求:

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

        【讨论】:

        • Firefox 允许您在重播前编辑呼叫,但 chrome 中没有这样的选项,所以上面的答案是要走的路
        • 使用 chrome 63+,在控制台中粘贴 CURL 不起作用。
        • @RaviParekh 我不认为他指的是 Chrome 控制台,他指的是操作系统命令行
        • Copy as fetch 允许直接从 Chrome 开发工具控制台重新发出更改的请求,对于那些没有 cURL 或不想打扰它的人来说是可行的选择。
        • 但是使用curl,有时候结果不一样。我来这里是想知道我是否可以从浏览器请求。使用浏览器的javascript。它允许我重现 CORS 问题,我的终端上的卷曲不应该启发我。
        【解决方案10】:

        保持简单,如果您希望请求使用与您正在查看的页面相同的浏览上下文,那么在 Chrome 控制台中执行以下操作:

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

        【讨论】:

          【解决方案11】:

          如果你在你的网站上使用 jquery,你可以在你的控制台中使用类似这样的东西

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

          【讨论】:

            【解决方案12】:

            如果您想从同一个域进行 POST,您可以随时使用开发者工具将表单插入 DOM 并提交:

            【讨论】:

              【解决方案13】:

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

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

              它的 jquery 方式!

              【讨论】:

              • 这假设网页将使用 jQuery
              • 记住这只是GET的请求,如果你想做其他类型的请求,你可以使用$.ajax
              • @mikemaccana 您可以通过控制台将 jQuery 加载到任何页面中。
              • 点赞var script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
              • @itsneo 答案是正确的!如果正在访问的页面还没有它,则加载 jquery 的方法。然后你可以使用 $.ajax 或等效的,而不需要插件
              猜你喜欢
              • 2014-01-15
              • 1970-01-01
              • 1970-01-01
              • 2014-09-16
              • 1970-01-01
              • 2012-09-08
              • 2023-03-18
              • 2016-06-10
              • 1970-01-01
              相关资源
              最近更新 更多