Soumission d’un formulaire en JS - erreur CORS (requête multiorigines)

Bonjour,

Souhaitant intégrer mon formulaire d’inscription à ma newsletter à mon site avec mon propre HTML/CSS/JS, je suis parti de la version « HTML simple » que j’ai adaptée. Je tente de gérer la soumission avec mon propre JS. Elle fonctionne et l’adresse e-mail soumise reçoit bien l’e-mail de confirmation (double opt-in), mais le navigateur reçoit une erreur de requête cross-origin non autorisée.

Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur [URL de mon point d’accès chez Brevo]. Raison : l’en-tête CORS « Access-Control-Allow-Origin » est manquant. Code d’état : 200.

Voici ce que je fais, dans le principe :

document.addEventListener('DOMContentLoaded', function () {
    const form = document.getElementById('form');
    const dialog = document.getElementById('dialog');

    form.addEventListener('submit', function (event) {

	// Prevent default form submission
	event.preventDefault(); 

	// Collect form data
	const formData = new FormData(form);

	// Send form data to endpoint
	fetch(form.action, {
	    method: 'POST',
	    body: formData,
	})
	    .then(response => {
		if (response.ok) {
		    dialog.textContent = 'Success';
		    dialog.showModal();
		}
		else {
		    dialog.textContent = 'Bad response';
		    dialog.showModal();
		}
	    })
	    .catch(error => {
		console.error(error);
		dialog.textContent = error;
		dialog.showModal();
	    });
    });

});

Du coup je passe dans le catch error, donc je ne peux pas afficher de message de succès à l’utilisateur·ice bien que la soumission ait fonctionné — à moins de gérer ce message de succès dans le catch error, ce qui ne serait pas franchement clean — et plus généralement ça ne me paraît pas correct ni pérenne de mettre ça en prod…

Y a-t-il un moyen d’autoriser les requêtes CORS émises depuis mon domaine ? Je n’ai pas trouvé cette option dans mes paramètres. Y a-t-il sinon une autre solution ?

Je me permets un petit up car je suis étonné de n’avoir aucune réponse et si peu de vues, poster un 23 décembre n’était peut-être pas très propice :slight_smile:

N’y a-t-il donc pas moyen de personnaliser entièrement le formulaire, javascript compris, en évitant cette erreur d’en-tète CORS ?

Bonjour @Frann , merci pour votre post.
Est-ce que vous pourriez nous dire sur quel site web ou sur quelle page vous avez essayé d’installer le formulaire ?

Bonjour @ahudavert
Voici une URL de preprod : https://newsletter3431786.frann-bd.pages.dev/
Vous pouvez tester le formulaire et constater le comportement que j’ai décrit dans mon 1er post. Vous verrez un message d’erreur CORS dans la console du navigateur, ainsi qu’un message d’erreur dans l’UI du site (un peu plus verbeux que dans l’exemple de code que j’ai donné mais peu importe), mais vous recevrez pourtant l’e-mail de double opt-in.