Ein Support-Chat, der den Reload übersteht. Ohne iframe und ohne Third-Party-Cookies.

← Alle Artikel

Ein Support-Chat, der den Reload übersteht. Ohne iframe und ohne Third-Party-Cookies.

Warum eingebettete Chats ihre Sitzung verlieren und wie wg_chat sie im eigenen Speicher Ihrer Seite hält. Mit ehrlichen Grenzen.

Die meisten Chat-Widgets laufen in einem iframe auf einer fremden Domain. Das geht gut, bis jemand die Seite neu lädt. Dann muss der Chat wissen, in welchem Gespräch er war. Die Orte, an denen ein fremdes Widget sich das merken kann, werden kleiner.

Safari blockiert Third-Party-Cookies standardmäßig. Firefox legt sie für jede Seite getrennt ab. Der Speicher in einem seitenfremden iframe ist in allen großen Browsern abgetrennt. Ob ein iframe-Chat seine Sitzung behält, hängt davon ab, wo der Anbieter sie ablegt. Manche lösen das gut. Viele verlassen sich auf ein Cookie auf der eigenen Domain, und genau das bricht.

wg_chat umgeht die Frage. Es läuft nicht im iframe. Es wird in die Seite gerendert, die es einbindet. Was es in den localStorage schreibt, ist deshalb Speicher Ihrer eigenen Seite. Es hält so lange wie der Speicher Ihrer Seite.

Was im Browser liegt

Nur eine Gesprächs-ID und eine HMAC darüber (SHA-256). Das ist kein Sitzungsschlüssel. Der Browser findet damit sein Gespräch auf dieser einen Seite wieder. Mehr erlaubt sie nicht, und anderswo ist sie wertlos.

Der Verlauf bleibt auf dem Server, mit AES-256 verschlüsselt. Löscht ein Besucher seinen Speicher, geht nichts verloren. Er beginnt ein neues Gespräch, und Sie haben das alte weiterhin.

Für Betreiber in Deutschland

Bei der serverseitigen Einbindung läuft wg_chat auf Ihrem eigenen PHP-Server. Dort liegt auch der Verlauf. Es gibt keinen Chat-Anbieter, an den Gesprächsinhalte gehen. Welche Hinweise Ihre Datenschutzerklärung für einen Chat braucht, hängt von Ihrer Seite ab. Das hier ist keine Rechtsberatung.

Wie neue Nachrichten ankommen

Über einfaches HTTP-Polling mit fetch. Standard sind 4 Sekunden, einstellbar bis 1,5 Sekunden. Kein WebSocket, kein zusätzlicher Dienst. Das ist ein echter Kompromiss. Es läuft auf jedem PHP-Hosting, ist aber nicht sofort, und jeder offene Chat kostet alle paar Sekunden eine kleine Anfrage.

Was ihn schützt

  • Der Betreiber meldet sich mit einem Schlüssel an, gespeichert mit password_hash. Nach 8 Fehlversuchen in 15 Minuten muss eine IP warten.
  • Ratenlimits erlauben 6 neue Gespräche und 20 Nachrichten in 5 Minuten.
  • Ein Honeypot-Feld hält einfache Bots ab.
  • Reines JavaScript. Kein jQuery, kein Framework, nichts Zusätzliches in Ihrer Seite.

Voraussetzung ist PHP ab 7.0 mit openssl und ein beschreibbares Verzeichnis. Mit SQLite, falls vorhanden, sonst mit einer verschlüsselten Datei.

So kommt er auf die Seite

Mit Ihrer persönlichen wgclient.php rendert Ihr eigener Server den Chat, bevor die Seite ausgeliefert wird. Er steht im ersten HTML, und der Verlauf liegt auf demselben Server.

<?php include "wgclient.php";
$wg->get("wg_chat", "WidgetStormSystem", '{"title":"Support"}', ""); ?>

Das leere letzte Argument liefert CSS, HTML und JS zusammen. Sie können jeden Teil auch einzeln abrufen und selbst platzieren.

Ihr CSS erreicht das Widget, weil es Teil Ihrer Seite ist. Sind Ihre Buttons rund, können es die Buttons im Chat auch sein.

Erst ausprobieren

Auf der Widget-Seite läuft eine Demo, direkt auf der Seite, ohne etwas zu speichern: widget-storm.de/widgets#premium

wg_chat kostet 4,99 € einmalig. Keine Abogebühr. Gesamtpreis. Gemäß § 19 UStG wird keine Umsatzsteuer berechnet.

Stimmt hier etwas nicht mit dem überein, was Sie sehen, sagen Sie es uns. Wir korrigieren lieber den Artikel, als ihn zu verteidigen.

Widget Storm ausprobieren

Die Widgets laufen als Live-Demo direkt auf der Seite. Öffentliche Widgets können registrierte Nutzer frei in eigene Projekte einbinden.

Widgets ansehen Support-Chat ohne iframe: 4,99 € einmalig

Gesamtpreis · gemäß § 19 UStG keine USt