Habilitación de CORS en un servidor web Go

CORSrepresentaUso compartido de recursos de origen cruzadoy es una forma muy práctica de hacer que una API sea accesible porJavaScriptcódigo del lado del cliente en el navegador.

Si está buscando una forma simple y rápida de habilitar CORS en localhost, o de abrir su API a cualquier persona en el mundo, use:

func handler(w http.ResponseWriter, req *http.Request) {
    // ...
	enableCors(&w)
    // ...
}

func enableCors(w http.ResponseWriter) { (w).Header().Set(“Access-Control-Allow-Origin”, “*”) }

Esto no proporciona ningún tipo de control o ajuste fino, y está destinado únicamente a fines de prueba. Echa un vistazo ahttps://github.com/rs/corspara una configuración más avanzada.

Manejo de solicitudes de OPCIONES previas al vuelo

CORS realiza solicitudes previas al vuelo enviando una solicitud OPTIONS a cualquier URL, por lo que para manejar una solicitud POST, primero debe manejar una solicitud OPTIONS a esa misma URL.

En los puntos finales GET esto no es un problema, pero es para las solicitudes POST y PUT y DELETE.

¿Cómo?

func setupResponse(w *http.ResponseWriter, req *http.Request) {
	(*w).Header().Set("Access-Control-Allow-Origin", "*")
    (*w).Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
    (*w).Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
}

func indexHandler(w http.ResponseWriter, req http.Request) { setupResponse(&w, req) if (req).Method == “OPTIONS” { return }

<span style="color:#75715e">// process the request...

}

Nuevamente, esto está destinado a CORS de uso privado únicamente. Es necesario restringir el uso público.


Más tutoriales de go: