Cómo manejar las solicitudes CORS de verificación previa en un servidor Go
Así que escribo este backend RESTful en Go, que se llamará con solicitudes HTTP entre sitios, es decir, desde contenido servido por otro sitio (en realidad, solo otro puerto, pero la política del mismo origen entra en juego, así que aquí estamos) .
En este escenario, el agente de usuario, en algunos casos, enviará solicitudes OPTIONS de verificación previa para verificar si la solicitud real es segura para enviar.
Mi pregunta es cómo tratar mejor y responder adecuadamente a estas solicitudes de verificación previa en un contexto Go. Las formas en que he concebido no se sienten muy elegantes, y me pregunto si hay algún otro enfoque para esto que no haya pensado.
Usando el estándarnet/http
paquete, puedo verificar el método de solicitud en la función de controlador, tal vez así:
func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
switch r.Method {
case "OPTIONS":
// handle preflight
case "PUT":
// respond to actual request
}
}
También puedo usarGorila mux
paquete, y registre un han de "OPCIONES" de verificación previa para cada ruta URL relevante.
r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
Quizás la respuesta a esta pregunta es simplemente:Sí, esas son tus opciones básicas. Pero pensé que podría haber algunas mejores prácticas en torno a esto que desconozco.