peticiones - Pasar parámetros en la URL al usar HTTP POST
peticiones get y post php (5)
¿admisible? Claro, es factible, pero me estoy inclinando hacia la especificación que sugiere que los métodos duales no se supone que necesariamente sucedan, o que no sean compatibles. RFC2616 define HTTP / 1.1, y yo diría que sugiere solo un método por solicitud. Si piensa en su transacción HTTP típica desde el lado del cliente, también puede ver la limitación:
$ telnet localhost 80
POST /page.html?id=5 HTTP/1.1
host: localhost
como puede ver, solo puede usar un método (POST / GET, etc.), sin embargo, debido a la naturaleza del funcionamiento de varios idiomas, pueden seleccionar la cadena de consulta y asignarla a la variable GET. finalmente, esta es una solicitud POST, y no un GET.
entonces, básicamente, sí , esta funcionalidad existe, ¿está destinada? Yo diría que no .
¿Se permite pasar parámetros a una página web a través de la URL (después del signo de interrogación) cuando se utiliza el método POST? Sé que funciona (la mayor parte del tiempo, de todos modos) porque la aplicación web de mi empresa lo hace a menudo, pero no sé si en realidad es compatible con el estándar o si puedo confiar en este comportamiento. Estoy considerando implementar un controlador de solicitudes SOAP que use un parámetro después del signo de interrogación para indicar que es una solicitud SOAP y no una solicitud HTTP normal. El motivo de esto es que la aplicación web es una extensión IIS, por lo que se puede acceder a todo a través de la misma URL (por ejemplo: example.com/myisapi.dll?command), por lo que para que se procese la solicitud SOAP, debo especificar eso " comando "parámetro. Existiría un comando genérico para SOAP, no un comando específico para cada acción SOAP, que se especificaría en la solicitud SOAP.
Básicamente, estoy tratando de integrar la biblioteca Apache Axis2 / C en mi aplicación web al permitir que la aplicación web maneje la solicitud HTTP y luego pasar el XML SOAP entrante a Axis2 para su manejo si se trata de una solicitud SOAP. Intuitivamente, no veo ningún motivo por el que esto no funcione, ya que la URL que está publicando es solo una URL arbitraria, en lo que se refiere a todos los componentes ... es el servidor el que da un significado especial a las partes después del signo de interrogación.
Gracias por cualquier ayuda / información que pueda proporcionar.
Comencemos con las cosas simples. Las variables de solicitud HTTP GET provienen del URI. El URI es un recurso solicitado, por lo que cualquier servidor web debería (y apache lo hace) tener todo el URI almacenado en alguna variable disponible para los módulos o componentes del servidor de aplicaciones que se ejecutan dentro del servidor web.
Un http POST que es diferente de un http GET es una llamada lógica separada al servidor web, pero todavía define un URI que debe procesar la publicación. Un buen servidor web (apache uno) volverá a hacer que el URI esté disponible para cualquier módulo o servidor de aplicaciones que se ejecute dentro de él, y además pondrá a disposición las variables que se enviaron en los encabezados de POST.
En el punto donde su aplicación toma el control de apache durante una POST, debe tener acceso a las variables GET y POST y poder hacer la lógica de control que desee, incluida la respuesta con un protocolo SOAP en lugar de HTML.
Creo que ningún estándar realmente define el concepto de "parámetros HTTP" o "variables de solicitud". RFC 1738 define que una URL puede tener una "parte de búsqueda", que es la subcadena después del signo de interrogación. HTML especifica en el protocolo de envío de formularios cómo un navegador que procesa un elemento FORM debe enviarlo. En cualquier caso, la forma en que el servidor procesa tanto la parte de búsqueda como el cuerpo de HTTP depende por completo del servidor; descartar ambos sería conforme a estas dos especificaciones (pero bastante inútil).
Para determinar si puede publicar una pieza de búsqueda en un servicio específico, debe estudiar la especificación del protocolo de este servicio. Si el servicio está prácticamente definido por medio de un formulario HTML, no puede usar una mezcla, ni siquiera puede usar POST si el FORMULARIO especifica GET (y viceversa). Si publica en un servicio web, debe consultar el WSDL del servicio web, que normalmente exigirá POST; con todos los datos en un mensaje SOAP. Etc.
Los marcos web específicos pueden tener la noción de "variables de solicitud": si dibujarán estas variables tanto desde una parte de búsqueda como desde un cuerpo de solicitud, deberá averiguarlo en la documentación del producto.
Implementé una aplicación web con 3 (un operador de red móvil) en el Reino Unido. Originalmente usaba parámetros POST, pero la puerta de enlace 3 los despojaba (¡y los encabezados X también!). Así que ten cuidado...
Si está preguntando si es posible enviar parámetros a través de GET y POST en una única solicitud HTTP, la respuesta es "SÍ". Esta es una funcionalidad estándar que se puede utilizar de manera confiable AFAIK.
Un ejemplo de esto es enviar credenciales de autenticación en dos partes, una sobre GET y la otra a través de POST para que cualquier intento de secuestro de una sesión requiera el secuestro de las variables GET y POST.
Entonces, en su caso, puede usar POST para contener la solicitud SOAP real, pero pruebe si se trata de una solicitud SOAP basada en el parámetro aprobado en GET (o en otras palabras, a través de la URL).