Ich versuche zu verstehen, wie die von Discourse verwendete Message-Bus-Funktion funktioniert, um mit neuen Nachrichten und Ereignissen online zu bleiben. Insbesondere interessiert mich, wie sie im kürzlich erschienenen Discourse-Chat-Plugin verwendet wird.
Durch Reverse Engineering sehe ich, dass jedes Mal, wenn ich einen Chatraum betrete, der Message-Bus über “https://mysite.com/message-bus/client_id/poll” abfragt, die Request-Header dupliziert werden, zum Beispiel:
Das funktioniert auf meiner Seite, aber wenn ich versuche, eine Anfrage von einer externen Seite oder einer mobilen App zu stellen, erhalte ich die Fehlermeldung:
Access to XMLHttpRequest at 'https://forum-dev.srepe.com/message-bus/f6e2303ff7704f608ef2b821fe210e90/poll'
from origin 'http://localhost:8100' has been blocked by CORS policy:
The 'Access-Control-Allow-Origin' header contains multiple values
'https://forum-dev.srepe.com, *', but only one is allowed.
Wenn ich das richtig verstehe, legt die message_bus ihre eigenen „Header“ fest? Gibt es eine Möglichkeit, die „Header“ zu verwenden, die bereits durch die Konfiguration von Discourse festgelegt wurden, zumindest diejenigen mit CORS-Verhalten?
Ich möchte doppelte „Header“ bei der Verwendung von message_bus vermeiden. Dies ermöglicht es mir, Anfragen außerhalb der Forum-Website zu stellen.
Sie haben Recht. Wenn ich die message_bus von außerhalb der Website verwenden würde (wie in einer PWA oder einer mobilen Hybrid-App), was würden Sie mir raten?
Ich fürchte, das ist zu individuell für mich, um hier Ratschläge zu geben. Ich schätze es sehr, dass mehr Leute Message Buses nutzen, aber Sie müssen hier die Dinge selbst debuggen.