La opción que se presenta en la pregunta es incorrecta, ya que invierte el funcionamiento real de ambos métodos. La diferencia clave entre GET y POST al enviar datos es la siguiente:
Diferencia fundamental
- GET: Envía los datos como parte de la URL (en la cadena de consulta o query string), por lo que son visibles en la barra de direcciones, quedan registrados en el historial del navegador y en los registros de los servidores. Está pensado para solicitar información sin modificar el estado del recurso, y tiene limitaciones de longitud.
- POST: Envía los datos dentro del cuerpo de la petición HTTP, por lo que no aparecen en la URL. Está diseñado para enviar información que pueda modificar el estado del servidor; no tiene límites de longitud prácticos y ofrece mayor privacidad (aunque no cifra los datos por sí mismo).
Corrección y explicación ampliada
La afirmación de la opción A está invertida: no es GET el que envía datos ocultos, sino POST.
- Usamos GET cuando queremos consultar información (ej: buscar un producto, ver un perfil) y los datos no son sensibles.
- Usamos POST cuando queremos enviar o modificar información (ej: iniciar sesión, registrar un formulario, guardar datos) y los datos requieren mayor discreción o son extensos.
Además, existe una diferencia de propósito: GET es un método de lectura (idempotente, no debe alterar datos), mientras que POST es un método de escritura o modificación (puede generar cambios en el sistema).