Scénario : par exemple, il existe deux interfaces, l'interface de connexion utilisateur a et l'interface d'acquisition d'informations utilisateur b. Il n'y a aucun problème lors de l'appel depuis le navigateur. Maintenant, lorsque nous devons utiliser
ajax
de jq pour appeler ces deux interfaces, quelque chose ne va pas.
Parlons d’abord du navigateur.
J'ai entré dans l'interface de connexion une adresse dans le navigateur, transmis les paramètres et la connexion a réussi. Le serveur (php) stocke mon identifiant, mon nom d'utilisateur, etc. dans session
. Ensuite, demandez l'interface d'informations utilisateur. b. Le serveur trouve directement les informations utilisateur de la session et renvoie au navigateur.
Parlons d’ajax.
J'ai utilisé ajax pour appeler l'interface de connexion en js, j'ai renvoyé des informations de réussite et la connexion a réussi. Les informations utilisateur sont également stockées dans la session. Mais lorsque j'ai utilisé ajax pour appeler l'interface b afin d'obtenir des informations sur l'utilisateur, quelque chose s'est mal passé, invitant session
introuvable.
Je l'ai vérifié dans la console. Une fois la connexion réussie du navigateur, les informations de set-cookie
seront renvoyées dans l'en-tête de réponse. La prochaine fois que vous demanderez l'interface sous le même nom de domaine, cookie
le sera automatiquement. envoyé dans l'en-tête de la requête Pour obtenir les données de session
dans le serveur.
Dans le cas d'une requête ajax, une connexion réussie renverra également des informations set-cookie
dans l'en-tête de réponse. Cependant, la prochaine fois que vous demanderez une interface sous le même nom de domaine, cookie
ne sera pas automatiquement envoyée, donc. le serveur est introuvable session
données.
Alors la question est :
Si je souhaite obtenir les données de session, dois-je envoyer manuellement le cookie lors d'une requête ajax ? Sinon, comment récupérer les données de la session ?
S'il vous plaît, demandez des réponses à Dieu !
ajax
Demande d'ajout de paramètresxhrFields : { withCredentials : true },
ajax
请求添加参数xhrFields: { withCredentials: true },
php 设置
php setheader('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Credentials:true');
🎜La session repose sur des cookies. Où sont stockés les cookies sur votre serveur ?
Même si vous transmettez le cookie dans le navigateur de votre client, est-il cohérent avec le cookie du serveur ?
La session n'est donc pas possible sur le serveur. Vous ne pouvez utiliser que des jetons et vous devez utiliser Redis ou quelque chose pour stocker des informations en arrière-plan.