Fazendo solicitações HTTP usando as ferramentas de desenvolvedor do Chrome

206

Existe uma maneira de fazer uma solicitação HTTP usando as ferramentas de desenvolvedor do Chrome sem usar um plug-in como o POSTER?

leojh
fonte
1
Você espera fazer solicitações entre domínios ou no mesmo domínio em que você abriu as ferramentas do desenvolvedor?
Lukas
6
Para todas as pessoas que querem esse recurso - estrelar esta questão Cromo: code.google.com/p/chromium/issues/...
Ivan Zuzak
1
Todas foram respostas úteis, só queria adicionar uma ferramenta que considero bastante útil Advanced Rest Client . Usar isso pode ajudar a economizar muito tempo a longo prazo, se for necessário fazer várias solicitações de API.
Sagar Ranglani 18/10
6
O Firefox é uma opção melhor para isso. basta clicar com o botão direito do mouse na solicitação e reenviar ou editar e reenviar.
eusoubrasileiro
@eusoubrasileiro: Obrigado. O botão Editar e reenviar na guia de rede do Firefox para reenviar uma solicitação é um recurso muito bom. Espero que alguém levanta um pedido para adicioná-lo em cromo bem
firstpostcommenter

Respostas:

187

Como a API Fetch é suportada pelo Chrome (e pela maioria dos outros navegadores), agora é muito fácil fazer solicitações HTTP no console do devtools.

Para OBTER um arquivo JSON, por exemplo:

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

Ou para POSTAR um novo recurso:

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)

Os Devtools do Chrome também oferecem suporte à nova sintaxe assíncrona / aguardada (embora a espera normalmente só possa ser usada em uma função assíncrona):

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

Observe que suas solicitações estarão sujeitas à mesma política de origem , como qualquer outra solicitação HTTP no navegador, para evitar solicitações de origem cruzada ou verifique se o servidor define cabeçalhos CORS que permitem sua solicitação.

Usando um plugin (resposta antiga)

Como complemento às sugestões postadas anteriormente, achei o plug-in Postman para o Chrome funcionando muito bem. Permite definir cabeçalhos e parâmetros de URL, usar autenticação HTTP, salvar solicitações que você executa com frequência e assim por diante.

Christofer Eliasson
fonte
3
Como o op aceitou uma resposta usando o Postman: Se você clicar com o botão direito do mouse na solicitação nas ferramentas de desenvolvimento e em "Copiar como cURL", poderá importar o comando cURL no Postman para reenviar / alterar a solicitação. Veja: getpostman.com/docs/postman/collections/data_formats -> "Importando como cURL"
dhfsk
1
Como fazer uma solicitação de postagem?
Nuhman
7
@Nuhman Fetch leva um segundo argumento, onde você pode configurar a pedidofetch("/echo/json/", { method: "POST", body: data })
Christofer Eliasson
1
Observe também que é possível copiar como buscar qualquer solicitação do histórico de rede das Ferramentas de Desenvolvimento do Chrome.
Vadzim
1
@mathtick Há uma modeopção pedido, pode usar: fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }. Observe que o modo: "no-cors" permite apenas um conjunto limitado de cabeçalhos na solicitação. Mais informações sobre o uso de busca e não-cors
Christofer Eliasson
154

Se você deseja editar e reemitir uma solicitação capturada na guia Rede das Ferramentas para Desenvolvedor do Chrome:

  • Clique com o botão direito do mouse Namena solicitação
  • Selecione Copy > Copy as cURL
  • Cole na linha de comando (o comando inclui cookies e cabeçalhos)
  • Edite a solicitação conforme necessário e execute

insira a descrição da imagem aqui

Damasco
fonte
11
Firefox permite editar a chamada antes de replay, mas não há tal opção em cromo, tão acima resposta é o caminho a percorrer
Tofeeq
3
Com o chrome 63+, colar CURL no console não está funcionando.
Ravi Parekh
2
@RaviParekh Eu não acho que ele quis dizer consola Chrome, ele quis dizer na linha de comando OS
Korayem
4
Copiar como busca permite reemitir solicitações alteradas diretamente do console do Chrome Dev Tools e é uma alternativa viável para quem não tem cURL ou deseja se preocupar com isso.
Vadzim
1
Mas, usando curl, às vezes o resultado não é o mesmo. Eu vim aqui para saber se eu poderia solicitar do navegador. Usando o javascript do navegador. Ele me permite reproduzir problemas de CORS, que ondulação do meu terminal não deve me esclarecer.
Garry Dias
32

Eu sei, post antigo ... mas pode ser útil deixar isso aqui.

Navegadores modernos agora oferecem suporte à API de busca .

Você pode usá-lo assim:

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: Ele fará todas as verificações do CORS, pois é uma melhoria XmlHttpRequest.

tomblue
fonte
13

Se sua página da web possui jquery, você pode escrever no console do desenvolvedor do Chrome:

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

Sua maneira jquery de fazê-lo!

sadaf2605
fonte
14
Isso pressupõe a página web vai usar jQuery
mikemaccana
2
Recordar que este é apenas para GETos pedidos, se você quer fazer outros tipos de solicitações, você pode querer fazer uso de$.ajax
aksu
@mikemaccana Você pode carregar o jQuery em qualquer página via console.
Nehem
1
Assimvar script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
nehem
1
A resposta @itsneo estava certa! Maneira de carregar o jquery se a página que está sendo acessada ainda não a tiver. Então você pode usar $ .ajax ou equivalente, sem necessidade de um plugin
Renato Chencinski
12

Expandindo na resposta @dhfsk

Aqui está o meu fluxo de trabalho

  1. No Chrome DevTools, clique com o botão direito do mouse na solicitação que você deseja manipular> Copy as cURL Cópia do DevTools do Chrome como cURL

  2. Open Postman

  3. Clique Importno canto superior esquerdo ePaste Raw Text Carteiro colar cURL de texto bruto do Chrome
Korayem
fonte
7

Se você deseja fazer um POST do mesmo domínio, sempre pode inserir um formulário no DOM usando as ferramentas Developer e enviá-lo:

Formulário inserido no documento

Craig Curtis
fonte
4

Tive a melhor sorte ao combinar duas das respostas acima. Navegue até o site no Chrome e encontre a solicitação na guia Rede do DevTools. Clique com o botão direito do mouse na solicitação e em Copiar, mas Copie como buscar em vez de cURL. Você pode colar o código de busca diretamente no console do DevTools e editá-lo, em vez de usar a linha de comando.

Aaron Parke
fonte
3
Não encaminhá-los como 'duas respostas acima' porque isso pode mudar quando upvoting / downvoting
Urosh T.
4

Para obter solicitações com cabeçalhos, use este formato.

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

se você usa o jquery no seu site, pode usar algo assim no seu console

$.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>

Nazor
fonte
1

Para simplificar, se você deseja que a solicitação use o mesmo contexto de navegação da página que você já está visualizando, basta fazer o seguinte no console do Chrome:

window.location="https://www.example.com";
Dave Potts
fonte
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>

Fady sadakah
fonte
1
Você deve explicar sua resposta, não apenas postar algum código aleatório.
Jakub Muda