Obtención de URL para servicios agrupados antiguos

En esta página se describe cómo usan las aplicaciones de App Engine el servicio de obtención de URLs para enviar solicitudes HTTP y HTTPS, así como para recibir respuestas. Para ver ejemplos de código que muestran cómo enviar solicitudes HTTP y HTTPS desde tu aplicación de App Engine, consulta Enviar solicitudes HTTP(S).

Solicitudes

App Engine usa el servicio de obtención de URLs para enviar solicitudes salientes. El lenguaje PHP proporciona varias funciones para hacer solicitudes HTTP remotas. Se implementan de diferentes formas en App Engine y están sujetas a cuotas y costes distintos. Para obtener más información sobre los distintos tipos, consulta Emitir solicitudes HTTP(S).

Protocolos de solicitud

Una aplicación puede obtener una URL mediante HTTP o HTTPS. El protocolo que se debe usar se deduce a partir del protocolo de la URL de destino.

La URL que se va a obtener puede usar cualquier número de puerto de los siguientes intervalos:

  • 80-90
  • 440-450
  • 1024-65535.

Si no se menciona el puerto en la URL, el protocolo lo implica. Las solicitudes HTTP se producen en el puerto 80 y las solicitudes HTTPS, en el puerto 443.

Métodos de solicitud

Si envías solicitudes a través del servicio de obtención de URLs, puedes usar cualquiera de los siguientes métodos HTTP:

  • GET
  • POST
  • PUT
  • HEAD
  • DELETE
  • PATCH

Una solicitud puede incluir encabezados HTTP y, en el caso de las solicitudes POST, PUT y PATCH, una carga útil.

Solicitar proxy

Ten en cuenta que el servicio de obtención de URLs usa un proxy compatible con HTTP/1.1 para obtener el resultado.

Para evitar que una aplicación provoque una recursión infinita de solicitudes, un controlador de solicitudes no puede obtener su propia URL. Sin embargo, sigue siendo posible provocar una recursión infinita por otros medios, por lo que debes tener cuidado si tu aplicación puede hacer que se obtengan solicitudes de URLs proporcionadas por el usuario.

Encabezados de solicitud

Tu aplicación puede definir encabezados HTTP para la solicitud saliente.

Al enviar una solicitud HTTP POST, si no se define explícitamente un encabezado Content-Type, se le asigna el valor x-www-form-urlencoded. Será el tipo de contenido utilizado por los formularios web.

Por motivos de seguridad, la aplicación no puede modificar los siguientes encabezados:

  • Content-Length
  • Host
  • Vary
  • Via
  • X-Appengine-Inbound-Appid
  • X-Forwarded-For
  • X-ProxyUser-IP

App Engine asigna valores precisos a estos encabezados según corresponda. Por ejemplo, App Engine calcula el encabezado Content-Length a partir de los datos de la solicitud y lo añade a la solicitud antes de enviarla.

Los siguientes encabezados indican el ID de aplicación de la aplicación que realiza la solicitud:

  • User-Agent. Este encabezado se puede modificar, pero App Engine añadirá una cadena de identificador para que los servidores puedan identificar las solicitudes de App Engine. La cadena añadida tiene el formato "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)", donde APPID es el identificador de tu aplicación.
  • X-Appengine-Inbound-Appid. Este encabezado no se puede modificar y se añade automáticamente si la solicitud se envía a través del servicio URL Fetch cuando el parámetro de redirecciones de seguimiento se define como False.

Tiempo de espera de la solicitud agotado

Puedes definir una fecha límite o un tiempo de espera para una solicitud. De forma predeterminada, el tiempo de espera de una solicitud es de 10 segundos. El plazo máximo es de 60 segundos para las solicitudes HTTP(S) y de 60 segundos para las solicitudes de colas de tareas y de tareas cron.

Conexiones seguras y HTTPS

Tu aplicación puede obtener una URL de forma segura mediante HTTPS para conectarse a servidores seguros. Los datos de las solicitudes y las respuestas se transmiten a través de la red de forma cifrada.

De forma predeterminada, el proxy de URL Fetch valida el host con el que se pone en contacto. Este comportamiento permite que la API detecte ataques de intermediario entre App Engine y el host remoto cuando se usa HTTPS.

Respuestas

Si usas la API URL Fetch, ten en cuenta que el servicio URL Fetch devuelve todos los datos de respuesta, incluidos la respuesta, el código, los encabezados y el cuerpo.

De forma predeterminada, si el servicio de obtención de URLs recibe una respuesta con un código de redirección, el servicio seguirá la redirección. El servicio seguirá hasta cinco respuestas de redirección y, a continuación, devolverá el recurso final. Puedes indicar al servicio de obtención de URLs que no siga las redirecciones y que, en su lugar, devuelva una respuesta de redirección a la aplicación.

Si la respuesta entrante supera el límite de tamaño máximo de respuesta, el servicio de obtención de URLs la truncará automáticamente. Consulta la sección Cuotas y límites para obtener más información.

Usar URL Fetch en el servidor de desarrollo

Cuando tu aplicación se ejecuta en el servidor de desarrollo de App Engine en tu ordenador, las llamadas al servicio de obtención de URLs se gestionan de forma local. El servidor de desarrollo obtiene las URLs poniéndose en contacto directamente con los hosts remotos desde tu ordenador, usando la configuración de red que tu ordenador utilice para acceder a Internet.

Cuando pruebes las funciones de tu aplicación que obtienen URLs, asegúrate de que tu ordenador pueda acceder a los hosts remotos.

Cuotas y límites de Obtención de URLs

Para obtener información sobre las cuotas del servicio de obtención de URLs, consulta Cuotas. Para ver el uso actual de la cuota de tu aplicación, ve a la página Detalles de cuota de laGoogle Cloud consola.

Ir a la página Detalles de la cuota

Además, se aplican los siguientes límites al uso del servicio URL Fetch:

Límite Importe
Tamaño de la solicitud 10 megabytes
Tamaño del encabezado de solicitud 16 KB (ten en cuenta que esto limita la longitud máxima de la URL que se puede especificar en el encabezado)
Tamaño de la respuesta 32 megabytes
Fecha límite máxima (controlador de solicitudes) 60 segundos
Fecha límite máxima (gestor de colas de tareas y de tareas cron) 60 segundos

Siguientes pasos

Ejecuta códigos de ejemplo y consulta cómo enviar solicitudes desde tu aplicación en Enviar solicitudes HTTP(S).