Axios : comment corriger l'erreur CORS policy: Response to preflight request doesn't pass access control check en langage Go ?

La librairie Axios est utilisée dans le langage JavaScript pour effectuer des requêtes HTTP vers le serveur. Elle est capable d'envoyer des requêtes vers le serveur où est installée l'application, mais également vers un autre domaine. On appelle cela une requête Cross-Domaine. Pour que la requête fonctionne correctement, il faut que, du côté serveur, la réponse soit correctement configurée.

Les requêtes Cross-Domaine ont des entêtes spécifiques. Ces derniers ne sont pas gérés par Axios, ils doivent être configurés directement sur le serveur. Si, lors de votre requête, vous recevez le message d'erreur suivant : "CORS policy: Response to preflight request doesn’t pass access control check", c'est qu'il manque un entête ou qu'il est mal paramétré. Pour configurer les entêtes, la manipulation dépend du langage utilisé. Dans le langage Go, vous devez utiliser l'objet "ResponseWriter" du module "http".

func setupResponse(w *http.ResponseWriter, req *http.Request) { //Récupération de l'objet qui crée les entêtes header := w.Header() //Domaines autorisés header.Add("Access-Control-Allow-Origin", "*") //Méthodes autorisées header.Add("Access-Control-Allow-Methods", "DELETE, POST, GET, OPTIONS") //entêtes pour ajouter des options supplémentaires header.Add("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With") }

Axios vous aide au travers du message d'erreur. Après le message, vous trouverez le caractère ":" suivi d'une description de l'erreur. Cette description va vous permettre de trouver ce qui n'est pas bon et de le corriger.

has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: It does not have HTTP ok status.

Ici, le message " It does not have HTTP ok status." indique que le statut "ok" n'a pas été envoyé dans la réponse, ce qui a fait échouer la requête. Sur votre serveur, vous devez utiliser la fonction "WriteHeader()" de l'objet "ResponseWriter" pour indiquer le statut "HTTP OK", qui correspond au code 200.

w.WriteHeader(http.StatusOK)

JavaScript