2017-10-18 24 views
0

Nous construisons une nouvelle application avec Ruby on Rails. Notre interface est dans un projet séparé et nous n'utilisons pas les vues de Rails. Notre backend est situé au api.app.example.com, tandis que la partie frontale est située au app.example.com. Ils sont sur des infrastructures différentes (l'un est dans AWS ECS, l'autre dans S3). Nous avons des difficultés à enregistrer les cookies de session dans le navigateur.Rails 5 backend sur le sous-domaine ne sauvegarde pas les cookies

J'ai fait quelques recherches et trouvé les paramètres domain: :all et tld_length: 4, mais ceux-ci ont été principalement sur le même sous-domaine de longueur, juste des noms différents. J'ai essayé quelques-unes des combinaisons différentes, mais aucun d'entre eux a aidé jusqu'à présent:

domain: :all, tld_length: 3 domain: :all, tld_length: 4 domain: '.app.example.com', tld_length: 4 domain: '.example.com' domain: :all

L'en-tête Set-Cookie est reçu avec succès par le navigateur, mais il est pas enregistré, à cet effet rendu toute demande après la connexion non autorisée.

Y a-t-il quelque chose que j'oublie? Est-ce que cela peut être résolu ou devrais-je simplement déplacer le tout en IP unique et utiliser /api au lieu de api.?

Répondre

0

Généralement, si vous utilisez Rails en tant que projet API, le stockage de session est désactivé par défaut. Vous devriez faire quelque chose comme ça dans un de vos initializers:

Rails.application.config.session_store :cookie_store, :key => '_namespace' 

Je ne pense pas que devrait sous-domaine d'importance dans ce cas, mais je peux me tromper.

+0

Je l'ai déjà défini. L'en-tête Set-Cookie est envoyé avec ceci, mais il n'est pas sauvegardé, je suppose en raison de la configuration du domaine. – jj9987