Activation de CORS sur un serveur Web Go

CORSsignifiePartage de ressources entre origineset c'est un moyen très pratique de rendre une API accessible enJavaScriptcode côté client dans le navigateur.

Si vous recherchez un moyen simple et rapide d'activer CORS dans localhost ou d'ouvrir votre API à n'importe qui dans le monde, utilisez:

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

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

Cela ne fournit aucun type de contrôle ou de réglage fin, et il est uniquement destiné à des fins de test. Jeter un coup d'œil àhttps://github.com/rs/corspour une configuration plus avancée.

Traitement des demandes OPTIONS avant vol

CORS fait des demandes de pré-vol en envoyant une demande OPTIONS à n'importe quelle URL, donc pour gérer une demande POST, vous devez d'abord gérer une demande OPTIONS à cette même URL.

Sur les points de terminaison GET, ce n'est pas un problème, mais c'est pour les demandes POST et PUT et DELETE.

Comment?

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

}

Encore une fois, ceci est destiné à un usage privé CORS uniquement. L'utilisation publique doit être restreinte.


Plus de tutoriels go: