Emite solicitudes HTTP(S)

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que seleccionas cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.

Obtén más información acerca de los ID de región.

Esta página describe cómo emitir solicitudes HTTP(S) desde tu aplicación de App Engine.

Para obtener más información sobre cuáles son los límites de tamaño de las solicitudes y qué encabezados se envían en una solicitud de recuperación de URL, consulta Solicitudes salientes.

Emite una solicitud HTTP

Para emitir una solicitud HTTP saliente, usa el paquete http como de costumbre, pero crea tu cliente mediante urlfetch.Client. urlfetch.Client muestra un *http.Client que usa urlfetch.Transport y es una implementación de la interfaz http.RoundTripper que realiza solicitudes mediante las la API de recuperación de URL.

El fragmento siguiente muestra cómo realizar una solicitud GET HTTP 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)
}

Inhabilita los redireccionamientos

Si usas la recuperación de URL, el servicio de recuperación de URL subyacente sigue hasta cinco redireccionamientos de forma predeterminada. Estos redireccionamientos podrían reenviar información sensible, como los encabezados de autorización, al destino redireccionado. Si tu app no requiere redireccionamientos HTTP, se recomienda que los inhabilites.

Para indicarle al servicio de recuperación de URL que no siga los redireccionamientos, configura el campo CheckRedirect de http.Client que mostró el paquete urlfetch para que muestre 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
}

Cómo emitir una solicitud HTTPS

En la API de Go, no tienes que proteger tu solicitud de forma explícita. El servicio de recuperación de URL subyacente valida el certificado del host que contacta de manera predeterminada, y rechaza las solicitudes si el certificado no coincide.

Inhabilita la validación del certificado del host

Para inhabilitar la validación automática del certificado del host, puedes crear manualmente un Transporte y configurar AllowInvalidServerCertificate como true.

Cómo emitir una solicitud dirigida a otra aplicación de App Engine

Cuando se emite una solicitud a otra app de App Engine, la tuya debe afirmar su identidad; para eso, se agrega el encabezado X-Appengine-Inbound-Appid a la solicitud. Si le indicas al servicio de recuperación de URL que no siga los redireccionamientos, App Engine agregará este encabezado a las solicitudes de manera automática.

Consulta Inhabilita los redireccionamientos para obtener más orientación.

¿Qué sigue?

Obtén más información sobre el servicio de recuperación de URL, como los encabezados que se envían en una solicitud de recuperación de URL, en Solicitudes de salida.