cross domain ajax form post – Comment est-ce autorisé?

J’utilise jQuery et le plugin de formulaire jQuery

Il existe une méthode dans le plugin de formulaire jQuery ajaxSubmit. Vous transmettez un formulaire puis le soumettez via ajax et vous obtenez une réponse. Je me demande comment cela est possible puisque le formulaire est sur un serveur différent de celui de la page Web. (Différents domaines). Cela semble fonctionner et je reçois une réponse que je peux traiter. Comment cela marche-t-il?

le formulaire de domaine est hébergé sur ( http://example.com )

URL du formulaire: 127.0.0.1

   PHP Point Of Sale <script src=""> <script src="">   <form id="formCheckout" method="post" action=""> $value) { ?>     $("#formCheckout").ajaxSubmit({ success: function(response) { console.log(response); } });    

Si le serveur a un en-tête de réponse 'Access-Control-Allow-Origin': '*' ou quelque chose de similaire, il retournera une réponse.

En bref, cela n’a rien à voir avec jQuery et a tout à voir avec le serveur.

Dans le cas ci-dessus, * est un caractère générique représentant toutes les origines. Mais cela pourrait aussi spécifier une liste d’origines.

N’oubliez pas que même dans les demandes CORS, vous pouvez toujours envoyer une demande au serveur, qui le recevra toujours. Il ne retournera une réponse que s’il le souhaite (dans ce cas, avec l’en-tête de contrôle d’access, ce sera le cas.)

Si le serveur ne possédait pas cet en-tête, vous obtiendrez l’erreur commune dans la console indiquant que XMLHTTPRequest could not complete because the server does not allow cross-origin communication ou quoi que ce soit d’autre.

Cela dépend de l’architecture utilisée par le serveur, mais s’il s’agit d’un serveur Node.js utilisant Express (par exemple), vous verrez quelque chose comme ceci: il s’agit du fichier server.js ou de l’ server.js :

 app.use(function(req, res) { res.header('Access-Control-Allow-Origin', '*') }); 

L’approche serait très différente sur différentes architectures de serveurs (comme Apache), mais l’en-tête est normalisé dans le cadre de HTTP, de sorte que la partie rest la même.

Voir AJAX Cross Domain pour un exemple.