Qual é a diferença entre "Request Payload" vs "Form Data" como visto na página de rede do Chrome dev tools

Tenho uma antiga aplicação web que tenho de suportar (que não escrevi).

Quando eu preencher um formulário e enviar, em seguida, verificar a página " rede "no Chrome eu vejo" pedir carga útil "onde eu normalmente veria"dados do formulário". Qual é a diferença entre os dois e quando um seria enviado em vez do outro?

pesquisei isto no Google, mas não encontrei nenhuma informação que explique isto (apenas pessoas a tentar obter aplicativos javascript para enviar "dados do formulário" em vez de "pedido" Carga".

Author: red888, 2014-04-16

2 answers

O pedido de Carga útil-ou para ser mais preciso: Corpo de carga útil de um pedido HTTP - os dados são normalmente enviados por um posto ou por pedido. É a parte após os cabeçalhos e o CRLF de um pedido HTTP .

Um pedido com Content-Type: application/json pode parecer assim:

POST /some-path HTTP/1.1
Content-Type: application/json

{ "foo" : "bar", "name" : "John" }

Se enviar isto por AJAX, o navegador simplesmente mostra-lhe o que está a enviar como corpo de carga útil. É tudo o que pode fazer porque não faz ideia de onde os dados estão a chegar. de.

Se enviar um formulário HTML com method="POST" e Content-Type: application/x-www-form-urlencoded ou Content-Type: multipart/form-data o seu pedido pode parecer o seguinte:

POST /some-path HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&name=John

Neste caso, os dados do formulário são o pedido de carga útil. Aqui o navegador sabe mais: ele sabe que a barra é o valor do campo de entrada foo do formulário submetido. E é isso que te está a mostrar.

Assim, diferem na Content-Type mas não na forma como os dados são apresentados. Em ambos os casos, os dados estão no corpo da mensagem. E o Chrome distingue como os dados são apresentados para você nas Ferramentas de desenvolvimento.

 292
Author: lefloh, 2017-05-23 11:54:53

No Chrome, o pedido com 'Content-Type: application / json' mostra como pedido de Carga útil e envia dados como objecto json.

, Mas o pedido com 'Content-Type:application/x-www-form-urlencoded' mostra os Dados do Formulário e envia dados como Chave:Valor Par, então se você tiver matriz de objeto em uma tecla ele flats valor da chave:

{ Id: 1, 
name:'john', 
phones:[{title:'home',number:111111,...},
        {title:'office',number:22222,...}]
}

Envia

{ Id: 1, 
name:'john', 
phones:[object object]
phones:[object object]
}
 14
Author: Mohammadreza, 2015-08-04 05:02:36