Aktueller Standort: Startseite> Neueste Artikel> Detaillierte Erläuterung von Lösungen und Vorgehensweisen für die domänenübergreifende gemeinsame Nutzung von PHP-Sitzungen

Detaillierte Erläuterung von Lösungen und Vorgehensweisen für die domänenübergreifende gemeinsame Nutzung von PHP-Sitzungen

M66 2025-10-23

So lösen Sie das domänenübergreifende Problem der PHP-Sitzung

Im Entwicklungsmodell, in dem Front- und Back-End getrennt sind, sind domänenübergreifende Anforderungen zu einem häufigen Szenario geworden. Aufgrund der Same-Origin-Richtlinieneinschränkungen des Browsers kann die Sitzung jedoch während des domänenübergreifenden Zugriffs nicht gemeinsam genutzt werden, was dazu führt, dass der Anmeldestatus des Benutzers zwischen verschiedenen Domänennamen nicht beibehalten werden kann. Um eine domänenübergreifende gemeinsame Nutzung der Sitzung zu realisieren, können wir zur Verarbeitung Cookies oder Tokens verwenden.

Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

Cookies können unter bestimmten Bedingungen domänenübergreifend übertragen werden und sind daher eine gängige Lösung zur Sitzungsfreigabe. Hier sind die Implementierungsschritte:

Der erste Schritt besteht darin, eine Sitzung auf der Serverseite zu erstellen:

 session_start();
$_SESSION['user'] = 'example';

Der zweite Schritt besteht darin, die Sitzungs-ID in das Cookie zu schreiben und den Cookie-Bereich festzulegen:

 setcookie(session_name(), session_id(), time() + 60*60*24*30, '/', 'www.example.com', false, true);

Unter anderem sollte www.example.com entsprechend dem tatsächlichen Domainnamen geändert werden.

Der dritte Schritt besteht darin, Cookies zu übertragen, wenn domänenübergreifende Anfragen im Frontend gestellt werden:

 fetch('http://www.example.com/api', {
  credentials: 'include',
});

Anmeldeinformationen: „include“ wird hier verwendet, um sicherzustellen, dass der Browser Cookie-Informationen in der Anfrage sendet.

Der vierte Schritt besteht darin, dass der Server die Anfrage empfängt und die Sitzung im Cookie analysiert:

 session_id($_COOKIE[session_name()]);
session_start();
if(isset($_SESSION['user'])){
    // session Domainübergreifende Freigabe erfolgreich
}else{
    // session Die domänenübergreifende Freigabe ist fehlgeschlagen
}

Durch die obige Konfiguration können Sitzungsinformationen in einer domänenübergreifenden Umgebung gemeinsam genutzt werden.

Verwenden von Token zur Realisierung der domänenübergreifenden Sitzungsfreigabe

Eine weitere flexiblere Lösung besteht darin, den Token-Mechanismus zu verwenden, um eine domänenübergreifende Sitzungsfreigabe zu erreichen. Diese Methode basiert nicht auf Cookies und eignet sich daher besser für API-Schnittstellen oder Szenarien für mobile Endgeräte.

Die Implementierungsschritte sind wie folgt:

Der erste Schritt besteht darin, beim Anmelden des Benutzers ein Token auf dem Server zu generieren:

 $token = bin2hex(random_bytes(16));
// WilletokenIn der Datenbank speichern und an den Benutzer binden
// zurückkehrentokenan den Kunden

Im zweiten Schritt speichert das Frontend den Token in localStorage oder sessionStorage .

Der dritte Schritt besteht darin, das Token zum Anforderungsheader oder zu den Parametern hinzuzufügen und es an den Server zu senden, wenn eine domänenübergreifende Anforderung gestellt wird:

 fetch('http://api.example.com/userinfo', {
  headers: {
    'Authorization': 'Bearer ' + localStorage.getItem('token')
  }
});

Im vierten Schritt überprüft der Server die Identität des Benutzers durch Parsen des Tokens und stellt den Sitzungsstatus basierend auf den Überprüfungsergebnissen wieder her.

Bei der Verwendung der Token-Lösung müssen Sie auf Sicherheitsaspekte achten. Token sollten eine Gültigkeitsdauer haben und über den Aktualisierungsmechanismus regelmäßig aktualisiert werden können; Der Server sollte außerdem regelmäßig abgelaufene Token bereinigen, um Sicherheitsrisiken vorzubeugen.

Zusammenfassen

In diesem Artikel werden zwei gängige domänenübergreifende PHP-Sitzungsfreigabelösungen vorgestellt: die gemeinsame Nutzung von Sitzungen über Cookies und die Implementierung der Sitzungsüberprüfung über den Token-Mechanismus. Ersteres ist einfach zu implementieren und eignet sich für die gemeinsame Nutzung zwischen Subdomains unter derselben Hauptdomain. Letzteres ist flexibler und sicherer und eignet sich für komplexe verteilte Systeme oder Systeme mit mehreren Terminals. Entwickler können basierend auf der Projektarchitektur und den Sicherheitsanforderungen eine geeignete Implementierungsmethode auswählen.