Atributo method do HTML <form>

Definição e uso

method O atributo define como enviar os dados do formulário (os dados do formulário serão enviados para a página especificada no atributo action).

Os dados do formulário podem ser enviados como variáveis da URL (usando method="get") ou como transação HTTP POST (usando method="post")

Sobre GET:

  • Adicione os dados do formulário na forma de pares de nome/valor à URL
  • A URL tem um limite de comprimento (aproximadamente 3000 caracteres)
  • Não use GET para enviar dados sensíveis! (Será visível na URL)
  • Muito útil para formulários de envio de resultados que o usuário deseja adicionar como favoritos
  • GET é mais adequado para dados não seguros, como strings de consulta no Google.

Anotações sobre POST:

  • Adicione os dados do formulário ao corpo da solicitação HTTP (os dados não serão exibidos na URL).
  • Sem limite de tamanho.
  • Os formulários submetidos usando POST não podem ser adicionados aos favoritos.

Exemplo

Exemplo 1

Submeta o formulário usando o método "get":

<form action="/action_page.php" method="get">
  <label for="fname">Nome:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Sobrenome:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Enviar">
</form>

Experimente você mesmo

Exemplo 2

Submeta o formulário usando o método "post":

<form action="/action_page.php" method="post">
  <label for="fname">Nome:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Sobrenome:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Enviar">
</form>

Experimente você mesmo

Sintaxe

<form method="get|post">

Valor da propriedade

Valor Descrição
get Padrão. Adicione os dados do formulário na forma de pares nome/valor à URL: URL?name=value&name=value.
post Envie os dados do formulário como uma transação HTTP POST.

Explicação da propriedade method

O navegador envia os dados do formulário para o servidor para processamento usando o método definido pela propriedade method. Existem dois métodos: POST e GET.

Se usar o método POST, o navegador enviará os dados conforme as duas etapas a seguir. Primeiro, o navegador estabelece contato com o servidor de processamento de formulários especificado na propriedade action, e, após estabelecer a conexão, o navegador enviará os dados para o servidor usando o método de transmissão em segmentos.

No lado do servidor, assim que o aplicativo do estilo POST começa a ser executado, os parâmetros devem ser lidos a partir de um local marcador e, antes que o aplicativo possa usar esses valores de formulário, esses parâmetros devem ser decodificados. O servidor específico do usuário especifica claramente como o aplicativo deve aceitar esses parâmetros.

Outra situação é usar o método GET, neste caso, o navegador estabelece uma conexão com o servidor de processamento de formulários e, em seguida, envia todos os dados do formulário diretamente em uma única etapa de transmissão: o navegador anexa os dados diretamente após a URL de ação do formulário. Eles são separados por um ponto de interrogação.

Os navegadores geralmente podem transmitir informações de formulário usando qualquer um dos métodos acima, enquanto alguns servidores aceitam apenas um dos métodos fornecidos. Você pode especificar no atributo method (método) do <form> qual método o servidor de processamento de formulários deve usar para processar os dados, seja POST ou GET.

POST ou GET?

Se o servidor de processamento de formulários suportar tanto o método POST quanto o GET, qual método você deve escolher? Abaixo estão algumas regras sobre isso:

  • Se você quiser obter o melhor desempenho de transmissão do formulário, pode usar o método GET para enviar pequenos formulários com poucos campos curtos.
  • Alguns sistemas operacionais de servidores limitam o número e o comprimento dos parâmetros de linha de comando que podem ser passados diretamente para o aplicativo. Neste caso, para formulários com muitos campos ou campos de texto longos, deve-se usar o método POST para enviar.
  • Se você tiver pouca experiência na escrita de aplicativos de processamento de formulários do lado do servidor, deve usar o método GET. Se usar o método POST, terá que fazer alguns trabalhos adicionais de leitura e decodificação, o que pode não ser difícil, mas pode não ser o que você queria lidar com esses problemas.
  • Se a segurança for um problema, recomendamos usar o método POST. O método GET coloca os parâmetros do formulário diretamente na URL do aplicativo, permitindo que os espiões da rede capturem facilmente e extraiam da log do servidor. Se os parâmetros incluírem informações sensíveis, como números de cartões de crédito, pode comprometer a segurança do usuário sem que ele perceba. Os aplicativos POST não têm vulnerabilidades de segurança, pelo menos podem usar criptografia ao transmitir os parâmetros como transações individuais para o servidor para processamento.
  • Se você quiser chamar o aplicativo do lado do servidor fora do formulário e passar parâmetros para ele, você deve usar o método GET, pois este método permite incluir parâmetros como parte da URL. Por outro lado, os aplicativos no estilo POST desejam que haja um processo adicional de transmissão do navegador na URL, onde o conteúdo da transmissão não pode ser o conteúdo do <a> tradicional.

Passagem clara de parâmetros

Alguns conselhos anteriores também podem ser uma explicação para a escolha deste método. Suponha que você tenha um formulário muito simples, que contenha apenas os parâmetros x e y. Ao codificar os valores desses elementos, eles têm a seguinte forma:

x=28&y=66

Se o formulário usar method=GET, a URL usada para referenciar o aplicativo do lado do servidor será conforme mostrado a seguir:

http://www.example.com/example/program?x=28&y=66

Em qualquer momento, podemos criar um <a> tradicional, usá-lo para chamar um formulário com os parâmetros necessários, conforme mostrado a seguir:

<a href="http://www.example.com/example/program?x=28&y=66">

O único problema é que o símbolo & usado para delimitar os parâmetros também é o caractere entity de inserção. Se um símbolo & for colocado no atributo href da tag <a>, o navegador substituirá os caracteres subsequentes pelo caractere entity correspondente.

Para evitar esse problema, devemos substituir o símbolo & pelo seu equivalente de entity, ou seja, pelo "&" ou "&". Após a substituição, o exemplo anterior de referência a aplicativo de servidor não formulário será como segue:

<a href="http://www.example.com/example/program?x=28&y=66">

Dado que ainda não é possível usar o símbolo & em URLs e pode haver confusão no futuro, incentivamos os servidores a aceitarem também o uso de ponto-e-vírgula como delimitador de parâmetros. Você também pode consultar a documentação do seu servidor para verificar se ele suporta essa funcionalidade.

Suporte a navegadores

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Suporte Suporte Suporte Suporte Suporte