Solicitudes salientes

En esta página, se describe cómo las aplicaciones de App Engine utilizan el servicio de recuperación de URL para emitir solicitudes HTTP y HTTPS y recibir respuestas. Para ver ejemplos de código que muestran cómo emitir solicitudes HTTP y HTTPS desde tu aplicación de App Engine, consulta Cómo emitir solicitudes HTTP(S). Para ver el contenido del paquete urlfetch, consulta la referencia del paquete urlfetch.

Solicitudes

App Engine utiliza el servicio de recuperación de URL para emitir solicitudes de salida. En Go, el paquete urlfetch proporciona urlfetch.Transport, una implementación de la interfaz http.RoundTripper que realiza solicitudes mediante la infraestructura de App Engine.

Protocolos de solicitud

Una aplicación puede recuperar una URL mediante HTTP o HTTPS. El protocolo que se debe usar se infiere del protocolo que se indica en la URL de destino.

La URL que se debe recuperar puede usar cualquier número de puerto en los siguientes rangos:

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

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

Métodos de solicitud

Si emites solicitudes a través del servicio de recuperación de URL, 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 POST, PUT y PATCH, una carga útil.

Proxies de solicitudes

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

A fin de evitar que una aplicación pueda provocar una recursión de solicitudes sin fin, no se permite que un controlador de solicitudes obtenga su propia URL. Sin embargo, es posible provocar una recursión sin fin de otras maneras, por lo que debes tener cuidado si permites que los usuarios suministren URL que generen solicitudes de recuperación en tu aplicación.

Encabezados de solicitud

Tu aplicación puede configurar encabezados HTTP para la solicitud de salida.

Cuando se envía una solicitud POST HTTP, si no se configura explícitamente un encabezado Content-Type, se usa el encabezado x-www-form-urlencoded. Este es el tipo de contenido que se usa en 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 configura estos encabezados con valores precisos según corresponda. Por ejemplo, App Engine calcula el encabezado Content-Length a partir de los datos de la solicitud y lo agrega a la solicitud antes de enviarla.

Los siguientes encabezados indican el ID de aplicación de la app solicitante:

  • User-Agent. Este encabezado se puede modificar, pero App Engine agregará una string de identificación para permitir que los servidores identifiquen las solicitudes de App Engine. La string agregada tiene el formato "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)", en el que APPID es el identificador de tu app.
  • X-Appengine-Inbound-Appid. Este encabezado no se puede modificar y se agrega automáticamente si la solicitud se envía a través del servicio de recuperación de URL.

Tiempos de espera de solicitud

Puedes configurar un plazo máximo, o tiempo de espera, para una solicitud. De manera predeterminada, el tiempo de espera de una solicitud es 5 segundos. El plazo máximo es de 60 segundos para las solicitudes HTTP(S) y 60 segundos en el caso de las solicitudes de trabajos cron y la lista de tareas en cola.

Conexiones seguras y HTTPS

Tu aplicación puede recuperar una URL de forma segura con HTTPS para conectarse a servidores seguros. Los datos de solicitud y respuesta se transmiten a través de la red en forma encriptada.

En la API de Go, el proxy de recuperación de URL valida el host con el que se está contactando de forma predeterminada. Este comportamiento permite que la API detecte ataques de intermediarios entre App Engine y el host remoto cuando se usa HTTPS.

Respuestas

Si usas la API de recuperación de URL, ten en cuenta que el servicio de recuperación de URL muestra todos los datos de respuesta, lo que incluye la respuesta, el código, los encabezados y el cuerpo.

De manera predeterminada, si el servicio de recuperación de URL recibe una respuesta con un código de redireccionamiento, el servicio lo seguirá. El servicio seguirá hasta cinco respuestas de redireccionamiento y luego mostrará el recurso final.

Cómo usar la recuperación de URL en el servidor de desarrollo

Cuando tu aplicación se ejecuta en el servidor de desarrollo de App Engine en tu computadora, las llamadas al servicio de recuperación de URL se manejan de manera local. A fin de recuperar las URL, el servidor de desarrollo se comunica con los hosts remotos directamente desde tu computadora, y usa la configuración de red que emplea tu computadora para acceder a Internet.

Cuando pruebes las funciones de tu aplicación que recuperan URL, asegúrate de que tu computadora pueda acceder a los hosts remotos.

Cuotas y límites para la recuperación de URL

Para obtener más información acerca de las cuotas del servicio de recuperación de URL, visita Cuotas. Puedes ver el uso actual de la cuota de tu aplicación en la pestaña de detalles de cuota de tu proyecto en Google Cloud Platform Console.

Además, se aplican los siguientes límites al uso del servicio de recuperación de URL:

Límite Importe
Tamaño de 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 respuesta 32 megabytes
Plazo máximo (controlador de solicitudes) 60 segundos
Plazo máximo (lista de tareas en cola y controlador de trabajos cron) 60 segundos

Próximos pasos

Ejecuta ejemplos de código y obtén orientación sobre cómo emitir solicitudes desde tu aplicación en Emite solicitudes HTTP(S).

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go