Il y a quelques jours, un site Web d'entreprise contenait un système de service client. Comme le site Web était un espace loué, il ne suffisait pas de stocker le système du client, nous avons donc mis en place un autre serveur afin d'unifier le nom de domaine (le nom de domaine). de l'autre serveur est le même que celui d'origine (le nom de domaine était trop différent), j'ai donc inclus ce système client dans le site Web d'origine à l'aide d'un framework, mais j'ai rencontré quelques problèmes. En raison des opérations inter-domaines, le problème de perte de session s'est produit après la connexion de l'utilisateur du système client, ce qui m'a dérangé pendant une journée entière. J'ai également posté ici pour demander des solutions. net/dispbbs.asp ?boardID=10&ID=167628&page=3. Après avoir recherché des informations de plusieurs manières, j'ai finalement résolu ce problème grâce à mes propres analyses et expériences. Aujourd'hui, j'ai vu quelqu'un demander un programme, j'ai donc écrit cet article pour que tout le monde puisse le partager.
Expliquez d’abord le principe :
Le système reconnaît la portée de chaque programme. De manière générale, un IE utilise par défaut une portée de programme.
Étant donné que le cadre a un contenu inter-domaines, il prend d'abord par défaut la portée du programme-cadre lui-même, de sorte que la portée du programme au sein du cadre ne peut pas être confirmée.
Afin de définir par défaut cet IE sur la portée du programme dans le cadre, j'ai utilisé plusieurs sauts.
Tout d'abord, sortez de ce cadre et entrez dans une page de site Web sans cadre qui nécessite une valeur de session (appelez-la la page du serveur B), puis générez une session dans cette page afin que le système puisse générer automatiquement un ID de session, puis revenez à la page encadrée. Parce que le système a généré un identifiant de session pour cet IE, tant que cet IE n'est pas fermé, le système pense toujours que cet IE est dans la portée de ce programme. peut survivre dans cette pièce d'identité.
Cela permet d’atteindre l’objectif de tromper le système.
Encore une chose à ajouter, le deuxième saut utilise une méthode différente. La raison est que je dois supprimer les informations en dehors du cadre et enregistrer les informations dans le cadre.
Différentes méthodes de saut supprimeront ou enregistreront les informations avant le saut.
Mise en œuvre du programme :
Fichier 1 :
Fichier framework : index.htm (exécuté sur le serveur A)
<html>
<tête>
<méta HTTP-EQUIV=Content-Type CONTENT=text/html; charset=gb2312>
<title>Industrie des portes Qihao</title>
</tête>
<frameset rows=1,* border=0 frameborder=0>
<frame name=winBackLoad scrolling=no noresize target=mainweb1 src=default_top.htm>
<frame name=mainweb1 src=http://www.serverB.com/index.asp scrolling=auto>
<pas de cadres>
<corps>
<p>Cette page utilise des frames, mais votre navigateur ne les prend pas en charge. </p>
</corps>
</noframes>
</frameset>
</html>
Fichier 2 : index.asp (exécuté sur le serveur B, fonctions pour sauter et générer l'ID de session)
<script>
if (top.location !== self.location) {
top.location=self.location;
}
//Le but de ce JS est de s'exécuter en dehors du cadre
</script>
<%
si session(xm2)= alors
session(xm2)=eee
"Le but de la phrase ci-dessus est simplement d'utiliser la session, de laisser le système générer un identifiant de session pour cet IE et de déterminer s'il a été sauté pour éviter de provoquer une boucle infinie.
%>
<META HTTP-EQUIV=REFRESH CONTENT=0;URL='http://www.serverA.com/index.htm'>
<%
, la phrase ci-dessus est pour revenir au cadre, remarque : utilisez uniquement la méthode de saut ci-dessus, n'utilisez pas la méthode de saut suivante.
autre
Réponse.Redirection index2.asp
« La phrase ci-dessus est le véritable saut pour exécuter le programme sur le serveur B ! Remarque : vous ne pouvez sauter que de cette façon !
terminer si%>
Après le saut ci-dessus, cet IE possède déjà l'ID de session sur le serveur B. En d'autres termes, bien que la trame s'exécute sur la trame principale du serveur A, il peut garantir que la session sur le serveur B n'est pas perdue, réalisant ainsi un inter-domaine. opération.