session quand appel ajax à nodejs avec apache mod_proxy et depuis un domaine différent

J’ai donc créé un proxy apache pour transférer mon api.example.loc vers localhost: 8080 / api

ServerAdmin [email protected] ServerName api.example.loc ProxyRequests off ProxyPreserveHost On  Order deny,allow Allow from all   Header set Access-Control-Allow-Origin "*" Order allow,deny Allow from all ProxyPass http://localhost:8080/api/ ProxyPassReverse http://localhost:8080/api/ ProxyPassReverseCookiePath / /  

et je vais avoir mon serveur nodejs en cours d’exécution et d’écoute sur le port 8080

 var express = require('express'), app = express(), server = require('http').createServer(app), app .use(require('cookie-parser')()) .use(require('express-session')({ secret: 's£cr£+c@d£' })) .get('/api', function(req, res) { var host = req.get('host'); console.log(host); console.log(req.sessionID); }); server.listen(8080); 

lorsque vous appelez localhost: 8080 ou api.example.loc tout va bien, je suis en train de recevoir l’hôte api.example.loc && le même ID de session lors de l’actualisation

 api.example.loc BWqB8NtZ3beHXZchkxJvwvEB 

mais quand j’essaie d’appeler mon api.example.loc depuis un autre domaine, disons api.loc en utilisant ajax

 $.ajax({ url: 'http://api.livechat.loc/', crossDomain: true }); 

J’ai un nouveau sessionID chaque fois que je rafraîchit la page sur api.loc

 api.livechat.loc OcIGeviXOmCkBWRELzPqMmVu api.livechat.loc 1yGT3rBaPaf9HCQ5zGd4iUud 

J’ai remarqué qu’en appelant api.example.come, un cookie de session est créé sur l’hôte api.example.loc, mais aucun cookie n’est créé s’il est appelé via ajax à partir de api.loc. J’ai donc essayé le suivant, sans meilleurs résultats

 ... .use(require('express-session')({ secret: 's£cr£+c@d£', cookie: { domain: '.api.loc', path: '/', maxAge: 1000 * 60 * 24 } })) ... 

des idées ?

ok j’ai fini en ajoutant withCredentials à mon appel ajax afin que les cookies puissent être configurés entre domaines

 $.ajax({ url: 'http://api.livechat.loc/', crossDomain: true, xhrFields: { withCredentials: true } }); 

et en changeant la section d’emplacement sur ma conf procuration

  Header set Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, PATCH, DELETE" Header set Access-Control-Allow-Origin "*" Header set Access-Control-Allow-Headers "X-Requested-With" Header set Access-Control-Max-Age "60" Header set Access-Control-Allow-Credentials true Order allow,deny Allow from all ProxyPass http://localhost:8080/api/ ProxyPassReverse http://localhost:8080/api/ ProxyPassReverseCookiePath / /