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 à la fois 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 demandes interdomaines, permettez-moi de dire deux choses:
Access-Control-Allow-Origin
en-tête dans la réponse (et j'utilise Chrome et Firefox, tous deux prenant en charge CORS )Alors, pourquoi, pourquoi, pourquoi le navigateur ne transmet-il pas le cookie lors de l'appel HTTPS Ajax? Des idées? Je suis sur le point de perdre la tête ...
+-----------+ HTTP Request +-----------+
|Browser |+---------------->|Server |
+-----------+ +-----------+
HTTP Response
<----------------+
Set-cookie
Ajax HTTP Req.
+---------------->
Cookie (OK)
HTTP Response
<----------------+
Set-cookie (OK)
Ajax HTTPS Req.
+---------------->
No Cookie (!!!)
Ok, j'ai trouvé la solution au problème des cookies.
Voir spécifications XHR , documents jQuery et StackOverflow .
La solution pour envoyer les cookies lors du changement de protocole et/ou de sous-domaine est de définir la propriété withCredentials
sur true
.
Par exemple. (en utilisant jQuery)
$.ajax( {
/* Setup the call */
xhrFields: {
withCredentials: true
}
});