Requêtes sortantes

Cette page décrit comment les applications App Engine utilisent le service URL Fetch pour envoyer des requêtes HTTP et HTTPS et recevoir des réponses. Pour voir des exemples de code montrant comment envoyer des requêtes HTTP et HTTPS à partir de l'application App Engine, consultez la page Envoyer des requêtes HTTP(S).

Requêtes

App Engine utilise le service URL Fetch pour envoyer des requêtes sortantes. Dans Python, vous pouvez utiliser les bibliothèques httplib, urllib et urllib2 pour effectuer des requêtes HTTP. Dans une application App Engine, chaque bibliothèque exécute ces requêtes à l'aide du service URL Fetch. Vous pouvez également utiliser directement la bibliothèque urlfetch.

Protocoles de requête

Une application peut récupérer une URL à l'aide du protocole HTTP ou HTTPS. Le protocole qui doit être utilisé est celui indiqué dans l'URL cible.

L'URL à récupérer peut utiliser n'importe quel numéro de port compris dans les plages suivantes :

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

Si le port n'est pas mentionné dans l'URL, celui-ci est défini par le protocole. Les requêtes HTTP se déroulent sur le port 80 et les requêtes HTTPS sur le port 443.

Méthodes de requête

Si vous envoyez des requêtes via le service URL Fetch, vous pouvez utiliser l'une des méthodes HTTP suivantes :

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

Une requête peut inclure des en-têtes HTTP, ainsi qu'une charge utile pour les requêtes POST, PUT et PATCH.

Requête transmise par proxy

Notez que le service URL Fetch utilise un proxy HTTP/1.1 compatible pour récupérer le résultat.

Pour empêcher une application de provoquer une récurrence sans fin des requêtes, un gestionnaire de requêtes n'est pas autorisé à récupérer sa propre URL. Les récurrences sans fin peuvent aussi se produire dans d'autres situations. Soyez donc prudent si l'application est en mesure de récupérer des requêtes d'URL fournies par l'utilisateur.

En-têtes de requêtes

L'application peut définir des en-têtes HTTP pour la requête sortante.

Lors de l'envoi d'une requête HTTP POST, si un en-tête Content-Type n'est pas spécifié explicitement, il est défini sur x-www-form-urlencoded. Il s'agit ici du type de contenu utilisé par les formulaires Web.

Pour des raisons de sécurité, les en-têtes suivants ne peuvent pas être modifiés par l'application :

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

Ces en-têtes sont définis sur des valeurs précises par App Engine, le cas échéant. Par exemple, App Engine calcule l'en-tête Content-Length à partir des données de la requête et l'ajoute à la requête avant son envoi.

Les en-têtes suivants indiquent l'ID de l'application à l'origine de la requête :

  • User-Agent. Cet en-tête peut être modifié. Toutefois, App Engine ajoute une chaîne d'identifiant pour permettre aux serveurs d'identifier les requêtes App Engine. La chaîne ajoutée se présente au format "AppEngine-Google; (+http://code.google.com/appengine; appid: APPID)", où APPID correspond à l'identifiant de l'application.
  • X-Appengine-Inbound-Appid. Cet en-tête ne peut pas être modifié et est ajouté automatiquement si la requête est envoyée via le service URL Fetch lorsque le paramètre de redirection est défini sur False.

Délais avant expiration des requêtes

Vous pouvez définir la durée ou le délai avant expiration d'une requête. Par défaut, ce dernier est de cinq secondes.

Vous pouvez envoyer des requêtes synchrones et asynchrones. Le comportement suivant s'applique à l'API URL Fetch :

  • Requêtes synchrones : l'appel de récupération attend que l'hôte distant affiche un résultat, puis redonne le contrôle à l'application. Si le temps d'attente maximal pour l'appel de récupération est dépassé, l'appel déclenche une exception.
  • Requêtes asynchrones : le service URL Fetch démarre la requête, puis renvoie immédiatement un objet. L'application peut effectuer d'autres tâches pendant la récupération de l'URL. Lorsque l'application a besoin des résultats, elle appelle une méthode sur l'objet, qui attend la fin de la requête si nécessaire, puis affiche le résultat. Si l'une des requêtes de l'API URL Fetch est en attente lorsque le gestionnaire de requêtes s'arrête, le serveur d'application attend que toutes les requêtes restantes renvoient un résultat ou expirent avant d'avoir renvoyé une réponse à l'utilisateur.

Connexions sécurisées et protocole HTTPS

L'application peut récupérer une URL en toute sécurité en utilisant le protocole HTTPS pour se connecter à des serveurs sécurisés. Les données de requête et de réponse sont transmises sur le réseau sous forme chiffrée.

Dans l'API Python, le proxy URL Fetch ne valide pas l'hôte contacté par défaut. Vous pouvez ajouter un argument validate_certificate facultatif à la méthode fetch() pour activer la validation d'hôte.

Réponses

Si vous utilisez l'API URL Fetch, notez que le service URL Fetch affiche toutes les données de la réponse, y compris le code, les en-têtes et le corps de la réponse.

Par défaut, si le service URL Fetch reçoit une réponse avec un code de redirection, il suit la redirection. Le service suit jusqu'à cinq réponses de redirection, puis renvoie la ressource finale. Vous pouvez indiquer au service URL Fetch de ne pas suivre les redirections et de renvoyer à la place, une réponse de redirection à l'application.

Utiliser l'API URL Fetch sur le serveur de développement

Lorsque l'application s'exécute sur le serveur de développement d'App Engine sur l'ordinateur, les appels au service URL Fetch sont gérés en local. Le serveur de développement récupère les URL en contactant les hôtes distants directement à partir de l'ordinateur. Pour ce faire, il utilise la configuration réseau qui permet à l'ordinateur d'accéder à Internet, quelle qu'elle soit.

Lorsque vous testez les fonctionnalités de l'application qui récupèrent des URL, assurez-vous que l'ordinateur puisse accéder aux hôtes distants.

Quotas et limites du service URL Fetch

Pour en savoir plus sur les quotas du service URL Fetch, consultez la section Quotas. Accédez à l'onglet Détails des quotas de la console Google Cloud Platform du projet pour en savoir plus sur l'utilisation actuelle du quota de votre application.

De plus, les restrictions suivantes s'appliquent à l'utilisation du service URL Fetch :

Limite Volume
Taille d'une requête 10 Mo
Taille de l'en-tête d'une requête 16 Ko (Remarque : Cela limite la longueur maximale de l'URL pouvant être spécifiée dans l'en-tête.)
Taille d'une réponse 32 Mo

Étape suivante

Exécutez des exemples de code et obtenez des instructions sur la procédure à suivre pour envoyer des requêtes à partir de l'application sur la page Envoyer des requêtes HTTP(S).

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python