Je sais que cela a déjà été demandé sous diverses formes, mais je n’arrive pas à contourner le problème. J’ai essayé d’utiliser jQuery et l’API JS native pour effectuer les requêtes Ajax.
Ma situation est la suivante (voir schéma ci-joint):
Avant de commencer une conférence sur les requêtes inter-domaines, permettez-moi d’énoncer quelques points:
Access-Control-Allow-Origin
tête Access-Control-Allow-Origin
dans la réponse (et j’utilise Chrome et Firefox, tous deux prenant en charge CORS ). Alors, pourquoi, pourquoi le navigateur ne transmet-il pas le cookie lors de l’appel HTTPS Ajax? Des idées? Je suis sur le sharepoint perdre la tête …
+-----------+ HTTP Request +-----------+ |Browser |+---------------->|Server | +-----------+ +-----------+ HTTP Response Cookie (OK) HTTP Response No Cookie (!!!)
Ok, a trouvé la solution au problème des cookies.
Voir les spécifications XHR , les documents jQuery et StackOverflow .
La solution pour que les cookies soient envoyés lors du changement de protocole et / ou de sous-domaine consiste à définir la propriété withCredentials
sur true
.
Par exemple (en utilisant jQuery)
$.ajax( { /* Setup the call */ xhrFields: { withCredentials: true } });
Document.cookie et Ajax Request ne partagent pas le cookie. Sinon, ajax ne peut pas accéder aux cookies de document.cookie ou des en-têtes de réponse. Ils ne peuvent être contrôlés que par le domaine distant.
Si vous obtenez d’abord une réponse incluant un cookie du serveur par ajax, vous pouvez demander une communication ajax avec un cookie au serveur.
Pour ce cas, vous écrivez comme ci-dessous le code (jQuery)
$.jajx({ xhrFields : { withCredentials : true } });
Voir cet article et démo