Qual é o método HTTP do formulário padrão?

147

Quando um formulário HTML é enviado sem especificar um método, qual é o método HTTP padrão usado? GET ou POST?

Esse comportamento já mudou entre os padrões HTML?

Por favor, cite um documento padrão do W3C, se possível.

David
fonte
1
Já foi respondido de forma brilhante aqui (com todas as especificações do W3C): stackoverflow.com/questions/2225735/…
Pekka

Respostas:

171

É GET.

Dê uma olhada W3C Superceded Recomendação 17.3 O elemento FORM .

Excerto:

<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- server-side form handler --
  method      (GET|POST)     GET       -- HTTP method used to submit the form--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  name        CDATA          #IMPLIED  -- name of form for scripting --
  onsubmit    %Script;       #IMPLIED  -- the form was submitted --
  onreset     %Script;       #IMPLIED  -- the form was reset --
  accept-charset %Charsets;  #IMPLIED  -- list of supported charsets --
  >

Boa leitura

Métodos GET e POST em formulários HTML - qual é a diferença?

Drew Wills
fonte
15

Aqui está a referência do W3C, que diz que GET é o padrão.

Jon Seigel
fonte
9

Se não especificado, o padrão é GET. Não vejo indicação de que esse comportamento tenha sido diferente. E faz sentido que GET seja o padrão, pois especifica que o método deve ser usado para ações sem efeitos colaterais.

http://www.faqs.org/faqs/www/cgi-faq/section-37.html

Citações de http://www.w3.org/TR/html401/interact/forms.html#h-17.3 :

method = get | post [CI]
Este atributo especifica qual método HTTP será usado para enviar o conjunto de dados do formulário. Os valores possíveis (sem distinção entre maiúsculas e minúsculas) são " get" (o padrão) e " post". Consulte a seção sobre envio de formulários para obter informações de uso.

17.13.1 Método de envio de formulário
O atributo method do FORMelemento especifica o método HTTP usado para enviar o formulário ao agente de processamento. Este atributo pode assumir dois valores:

  • get: com o método HTTP "get", o conjunto de dados do formulário é anexado ao URI especificado pelo atributo action (com um ponto de interrogação ("?") como separador)) e esse novo URI é enviado ao agente de processamento.

  • post: com o método HTTP "post", o conjunto de dados do formulário é incluído no corpo do formulário e enviado ao agente de processamento.

O método "get" deve ser usado quando o formulário é idempotente (ou seja, não causa efeitos colaterais). Muitas pesquisas de banco de dados não têm efeitos colaterais visíveis e fazem aplicativos ideais para o método "get".

Roger Willcocks
fonte
5

De acordo com o padrão W3C que você está solicitando, o padrão deve ser GET.

ghoppe
fonte
0

(resposta completa, também sobre ação e codificação)

O 'método' padrão, 'ação' e 'enctype' de um formulário HTML, se não forem especificados,
são GET, URL atual e application/x-www-form-urlencodedrespectivamente.
(Ou seja, por padrão, um formulário solicita a página atual com os parâmetros inseridos.)

Esse comportamento nunca mudou, exceto 'action' (no HTML 4, era necessário). Citações:

method: "O valor padrão ausente para o atributo method é ... o estado GET."
açao:

A ação de um elemento é o valor do atributo de formação do elemento, se o elemento for um Botão Enviar e tiver esse atributo, ou o valor do atributo de ação do proprietário do formulário, se houver, ou a sequência vazia. <...> Se a ação for a sequência vazia, deixe a ação ser a URL do documento do formulário.

enctype: "O valor padrão ausente para o atributo enctype é ... o application/x-www-form-urlencodedestado."

método: "Os valores possíveis (sem distinção entre maiúsculas e minúsculas) são 'get' (o padrão) e 'post'."
ação: sem padrão, o DTD exige o
enctype: "O valor padrão para este atributo é 'application / x-www-form-urlencoded'."

<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- server-side form handler --
  method      (GET|POST)     GET       -- HTTP method used to submit the form--
  enctype     %ContentType;  "application/x-www-form-urlencoded"

método: "Pode ser GET ou POST, e o padrão é GET."
ação: nenhuma sentença explícita, apenas no
enctype DTD : "O padrão é application / x-www-form-urlencoded ."

<!ATTLIST FORM
        action %URL #IMPLIED  -- server-side form handler --
        method (%HTTP-Method) GET -- see HTTP specification --
        enctype %Content-Type; "application/x-www-form-urlencoded"

método: nenhuma sentença explícita, apenas na
ação DTD : "O URI da ação é padronizado com o URI base do documento"
enctype: "A codificação padrão para todos os formulários é` application / x-www-form-urlencoded '. "

<!ATTLIST FORM
        ACTION CDATA #IMPLIED
        METHOD (%HTTP-Method) GET
        ENCTYPE %Content-Type; "application/x-www-form-urlencoded"
georgeawg
fonte