Como definir cabeçalhos HTTP em Go (CORS, Content-Type e outros)
Olá a todos! Sou um desenvolvedor Go iniciante e estou escrevendo minha primeira API REST com net/http. Encontrei um problema: meu frontend (React, rodando em localhost:3000) não consegue enviar requisições para o servidor (localhost:8080) por causa do CORS.
Estou tentando definir os cabeçalhos manualmente, mas algo está dando errado. Aqui está meu código:
```go
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Content-Type", "application/json")
fmt.Fprintf(w, `{"message": "Hello"}`)
}
func main() {
http.HandleFunc("/api", handler)
http.ListenAndServe(":8080", nil)
}
```
O problema é que quando faço uma requisição POST com corpo JSON, o navegador ainda exibe um erro de CORS. Tentei adicionar os cabeçalhos em lugares diferentes — antes e depois de escrever a resposta — mas o resultado é o mesmo. Também li sobre middleware, mas não entendo como aplicá-los a todas as rotas de uma vez.
Alguém pode me dizer como fazer isso corretamente?