Emitir solicitudes HTTP(S)

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Más información sobre los IDs de región

En esta página se describe cómo enviar solicitudes HTTP(S) desde tu aplicación de App Engine.

Para obtener información sobre los límites de tamaño de las solicitudes y los encabezados que se envían en una solicitud de obtención de URL, consulta Solicitudes salientes.

Enviar una solicitud HTTP

Para enviar una solicitud HTTP saliente, usa el paquete http como de costumbre, pero crea tu cliente con urlfetch.Client. urlfetch.Client devuelve un *http.Client que usa urlfetch.Transport, que es una implementación de la interfaz http.RoundTripper que hace solicitudes mediante la API de obtención de URLs.

En el siguiente fragmento se muestra cómo realizar una solicitud HTTP GET básica:

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/urlfetch"
)

func handler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	client := urlfetch.Client(ctx)
	resp, err := client.Get("https://www.google.com/")
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}
	fmt.Fprintf(w, "HTTP GET returned status %v", resp.Status)
}

Inhabilitar redirecciones

Si usas URL Fetch, el servicio subyacente de URL Fetch sigue hasta cinco redirecciones de forma predeterminada. Estas redirecciones podrían reenviar información sensible, como encabezados de autorización, al destino de la redirección. Si tu aplicación no requiere redirecciones HTTP, te recomendamos que las inhabilites.

Para indicar al servicio de obtención de URLs que no siga las redirecciones, defina el campo CheckRedirect del http.Client devuelto por el paquete urlfetch para que devuelva http.ErrUseLastResponse. Esto se aplica a appengine/urlfetch y appengine/v2/urlfetch. Por ejemplo:

client := urlfetch.Client(ctx)
client.CheckRedirect = func(*http.Request, []*http.Request) error {
  return http.ErrUseLastResponse
}

Emitir una solicitud HTTPS

De forma predeterminada, el servicio URL Fetch subyacente valida el certificado del host con el que se pone en contacto y rechaza las solicitudes si el certificado no coincide. No es necesario que protejas explícitamente tu solicitud.

Inhabilitar la validación de certificados de host

Para inhabilitar la validación automática del certificado de host, puedes crear manualmente un Transport y definir AllowInvalidServerCertificate en true.

Enviar una solicitud a otra aplicación de App Engine

Cuando envíes una solicitud a otra aplicación de App Engine, tu aplicación de App Engine debe afirmar su identidad añadiendo el encabezado X-Appengine-Inbound-Appid a la solicitud. Si le indicas al servicio de obtención de URLs que no siga las redirecciones, App Engine añadirá automáticamente este encabezado a las solicitudes.

Consulta Inhabilitar redirecciones para obtener información sobre cómo inhabilitar redirecciones.

Siguientes pasos

Consulta información sobre el servicio de obtención de URLs, como los encabezados que se envían en una solicitud de obtención de URLs en Solicitudes salientes.