2014-06-17 5 views
8

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? Vielen Dank!EventSource XHR-Header

Beachten Sie, dass ich nicht sicher bin, ob CORS sogar mit EventStream noch unterstützt wird, was dies von vornherein für mich verhindern würde, aber ich habe an bestimmten Stellen gelesen, dass es unterstützt werden sollte ...

Antwort

8

Erstens ist die gute Nachricht, 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 treffen, wenn mit den Nutzern zu tun, die darauf bestehen, auf eine veraltete Version eines modernen Auto-Update-Browser ausgeführt wird, die eine ungewöhnliche Kombination ist.)

  • Jetzt 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.

Apologies für den eklatanten Stecker, aber die beste Quelle für Informationen, die ich kenne, auf diese beiden Themen ist Kapitel 9 von my book on SSE. Es war das schwierigste Kapitel zu schreiben :-).

0

Ein alternativer Ansatz wäre, Ihr Autorisierungstoken über URL zu senden, und in Kombination mit HTTPS wäre es dennoch sicher vor Token-Hijacking.

Verwandte Themen