2017-08-22 3 views
0

J'utilise Tornado pour construire un serveur web et maintenant je code le module de connexion: après avoir fait le login, l'utilisateur peut envoyer un message au serveur.
Tornado: comment renvoyer des cookies avec ajax

Mon idée est comme ci-dessous:
Lorsque la connexion de l'utilisateur avec succès, le serveur définir un cookie sécurisé: self.set_secure_cookie("user", username, expires=time.time() + 60). Puis, lorsque l'utilisateur envoie un message au serveur, la requête doit contenir le cookie que le serveur vient de définir pour indiquer au serveur l'identité de l'utilisateur. S'il n'y a pas de cookie dans la requête, le serveur redirigera vers la page de connexion.

Maintenant, le problème est le suivant: le serveur ne peut obtenir aucun cookie.

Login:
enter image description here

Vous pouvez voir qu'un cookie est défini lorsque l'utilisateur ne vous connecter.

Puis le navigateur tente d'envoyer un message au serveur avec ajax:

url: 'http://www.example.com/addcomment', 
method: post, 
crossDomain: true, 
data: message, 
processData: false, 
cache: false 

Cependant, lorsque le serveur a essayé de self.get_secure_cookie("user"), il obtient un None, ce qui signifie que la demande n'envoie pas n'importe quel cookie au serveur.

ajouter également

xhrFields: { 
    withCredentials: true 
}, 

au ajax mais cela ne fonctionne pas non plus.

Si ajax ne peut envoyer aucun cookie au serveur, comment puis-je utiliser les cookies sécurisés de Tornado?

Répondre

0

bien, après cookie jeu, vous pouvez rediriger à visit_page_url

self.set_secure_cookie 
self.redirect(visit_page_url) 

si vous par chèque chrome-têtes de requête réseau de redirection, vous trouverez comme celui-ci ont Cookie terrain: enter image description here