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).

Si has configurado el acceso a VPC sin servidor o usas la API Sockets, debes impedir que URL Fetch gestione las solicitudes. URL Fetch provoca que las solicitudes a tu red de VPC o a la API Sockets fallen. Después de inhabilitar la obtención de URLs, la biblioteca estándar de Python gestionará las solicitudes HTTP. Si necesitas las funciones que proporciona URL Fetch para solicitudes específicas, puedes usar la biblioteca urlfetch directamente para esas solicitudes.

Solicitudes

App Engine usa el servicio de obtención de URLs para enviar solicitudes salientes. En Python, puedes usar las bibliotecas httplib, urllib y urllib2 para hacer solicitudes HTTP. En una aplicación de App Engine, cada biblioteca realizará estas solicitudes mediante el servicio de obtención de URLs. También puedes usar la biblioteca urlfetch directamente.

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.

Puedes enviar solicitudes síncronas y asíncronas. La API URL Fetch se comporta de la siguiente manera:

  • Solicitudes síncronas: la llamada de obtención espera hasta que el host remoto devuelve un resultado y, a continuación, devuelve el control a la aplicación. Si se supera el tiempo de espera máximo de la llamada de obtención, se genera una excepción.
  • Solicitudes asíncronas: el servicio de obtención de URLs inicia la solicitud y, a continuación, devuelve inmediatamente un objeto. La aplicación puede realizar otras tareas mientras se obtiene la URL. Cuando la aplicación necesita los resultados, llama a un método del objeto, que espera a que finalice la solicitud si es necesario y, a continuación, devuelve el resultado. Si hay solicitudes de obtención de URLs pendientes cuando se cierra el controlador de solicitudes, el servidor de aplicaciones espera a que todas las solicitudes restantes devuelvan un valor o alcancen su plazo antes de devolver una respuesta al usuario.

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.

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

Siguientes pasos

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