Go: abilitare CORS

Go: abilitare CORS

CORS, acronimo di Cross-Origin Resource Sharing, è una politica di sicurezza dei browser web che limita le richieste di risorse provenienti da origine diverse. Questa misura è volta a proteggere gli utenti da potenziali minacce di sicurezza, ma può anche creare restrizioni quando si sviluppano applicazioni web che necessitano di interagire con diverse origini. Fortunatamente, è possibile implementare CORS nel tuo server Go per consentire richieste provenienti da domini diversi, garantendo al contempo la sicurezza delle tue risorse.

In questo articolo, ti guideremo attraverso i passi necessari per abilitare CORS nel tuo server Go, consentendo richieste provenienti da qualsiasi origine. Prima di procedere, assicurati di avere Go installato sul tuo sistema.

Come accennato in precedenza, CORS è una politica di sicurezza dei browser web che limita le richieste di risorse provenienti da origini diverse rispetto all'origine del sito web che effettua la richiesta. L'origine è costituita dal protocollo (http o https), dal dominio e dalla porta.

Un esempio di richiesta da origine diversa sarebbe una pagina web ospitata su https://a.tld che tenta di fare una richiesta a un server su `https://b.tld. Senza una politica CORS adeguata, il browser bloccherà questa richiesta.

Per abilitare CORS nel tuo server Go, devi modificare le intestazioni delle risposte del server per includere gli opportuni header CORS.

Per cominciare, crea una nuova directory per il tuo progetto Go e inizializza un nuovo modulo Go al suo interno:

mkdir mio-progetto-go
cd mio-progetto-go
go mod init mio-progetto-go

Creiamo ora il nostro file main.go e importiamo il pacchettonet/http` per creare il server HTTP:

package main

import (
    "fmt"
    "net/http"
)

Successivamente, definiamo un gestore per le richieste al nostro server. Questo gestore sarà responsabile di aggiungere le intestazioni CORS a tutte le richieste in entrata. Aggiungi il seguente codice al tuo file `main.go:

func handleRequest(w http.ResponseWriter, r *http.Request) {
    // Aggiungi le intestazioni CORS
    w.Header().Set("Access-Control-Allow-Origin", "*")
    w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
    w.Header().Set("Access-Control-Allow-Headers", "Content-Type")

    // Gestisci le richieste OPTIONS inviate dai browser per verificare le politiche CORS
    if r.Method == "OPTIONS" {
        return
    }

    // Il tuo codice per gestire le altre richieste va qui...

    // Esempio di risposta
    fmt.Fprintf(w, "Benvenuto nel mio server Go!")
}

func main() {
    // Imposta il gestore per le richieste sul percorso "/"
    http.HandleFunc("/", handleRequest)

    // Avvia il server sulla porta 8080
    fmt.Println("Server in ascolto sulla porta 8080...")
    http.ListenAndServe(":8080", nil)
}

Ora puoi avviare il server Go con il seguente comando:

go run main.go

Il tuo server Go è ora in ascolto sulla porta 8080 e consentirà richieste da qualsiasi origine grazie alle intestazioni CORS che abbiamo impostato.

Torna su