Ich versuche, EventSource für eine Streaming-Verbindung zu einem Server zu verwenden. Aber ich muss einen Sitzungsschlüssel-Header für die zugrunde liegende XHR-Anfrage festlegen. Wie greife ich vom EventSource-Objekt auf das XHR zu, wenn es überhaupt möglich ist? Danke!
Beachten Sie, dass ich mir nicht sicher bin, ob CORS sogar mit EventStream unterstützt wird, was dazu führen würde, dass dies überhaupt nicht funktioniert, aber ich habe an bestimmten Stellen gelesen, dass es unterstützt werden sollte ...
Erstens, die gute Nachricht ist, dass jeder Browser, der SSE unterstützt, auch CORS unterstützt und damit arbeitet. (Vor einem Jahr gab es Probleme, so dass Sie nur Probleme bekommen, wenn Sie mit Benutzern arbeiten, die darauf bestehen, eine veraltete Version eines modernen, automatisch aktualisierenden Browsers auszuführen, was eine ungewöhnliche Kombination ist.)
Nun die schlechte Nachricht: Sie können keine Header für EventSource-Anfragen setzen. Sie müssen zurück zum guten XHR-Streaming gehen, wenn Sie Header setzen können.
Auf der anderen Seite werden Cookies gesendet. Wenn Ihre Sitzungsinformationen per Cookie gesendet werden können, funktioniert das also.
Auf der anderen Seite kollidieren Cookies mit CORS; Wenn Sie sowohl SSE als auch Authentifizierung mit Websites von Drittanbietern benötigen, werden Sie frustriert sein. Sie müssen auf XHR zurückgreifen.
Entschuldigung für den eklatanten Stecker, aber die beste Informationsquelle, die ich über diese beiden Themen weiß, ist Kapitel 9 von mein Buch über SSE . Es war das schwierigste Kapitel zu schreiben: -).
Ein alternativer Ansatz wäre, Ihr Autorisierungstoken über URL zu senden, und in Kombination mit HTTPS wäre es dennoch sicher vor Token-Hijacking.
Tags und Links javascript stream long-polling server-sent-events