Bonjour,
En JS, quand l'API Fetch ou Axios sont utilisés, ils envoient toujours une requête avec la méthode "OPTIONS" qui correspond à une sorte d'ACK (Acknowledgement) pour voir s'ils ont le droit d'effectuer des requêtes en utilisant d'autres méthodes comme GET ou POST.
En plus de la modification des headers dans le fichier /webservice/dispatcher.php il faudra également retourner une réponse en 200 quand une requête de preflight avec la méthode "OPTIONS" est envoyée, ceci n'est pas géré par défaut par Prestashop.
Voici une proposition d'un bout de code (avec modification des headers inclus) à ajouter dans le fichier /webservice/dispatcher.php pour que ça marche :
// Modification des headers pour les méthodes header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Headers: Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Content-Type, Authorization'); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Allow-Methods: GET,HEAD,OPTIONS,POST,PUT'); // Retour OK si la méthode est en preflight if ($_SERVER['REQUEST_METHOD'] === "OPTIONS") { return http_response_code(200); }
Attention, la valeur * pour le paramètre "Access-Control-Allow-Origin" doit absolument être changé avant le déploiement en production vu ce n'est pas une pratique sécurisée.
Réponse inspirée de ce thread : https://stackoverflow.com/questions/53298478/has-been-blocked-by-cors-policy-response-to-preflight-request-doesn-t-pass-acce