Einbettungsfehler

Hi Support team!
When I try embedding with the provided js snippet, it will stuck at “Loading Discussion” and I get the following error:
Invalid X-Frame-Options: “ALLOWALL” header from ...
How can I resolve this issue?
Thanks!

This might be late, by I ran into the same problem, and would have appreciated an answer here. My problem only appeared when using Firefox. Chrome worked, no probem. I fixed it by adding the site embedding the content to the “cors origins” setting. Got the lead here.

2 „Gefällt mir“

Ich habe gerade bemerkt, dass unsere Seiten ebenfalls auf dieses Problem stoßen, jedoch nur bei neuen Beiträgen, nicht bei bestehenden Beiträgen, für die bereits ein zugehöriges Thema erstellt wurde. Der Fehler „Invalid X-Frame-Options header

Du solltest Cloudflare vorübergehend deaktivieren und schauen, ob das hilft. Das ist ganz einfach umzusetzen…

1 „Gefällt mir“

Gute Idee, ich habe es auf unserer Staging-Umgebung ausprobiert, aber leider hat es das Problem nicht behoben..

In Chrome sehe ich Fehler wie diesen:

Ausführung von 'postMessage' auf 'DOMWindow' fehlgeschlagen: Die angegebene Zielursprungsadresse ('https://test-discourse.comses.net') stimmt nicht mit der Ursprungsadresse des empfangenden Fensters ('https://test.comses.net') überein.

(aus https://test.comses.net/codebases/f0613922-9cb1-4656-a26c-af57f823fb69/releases/3.2.0/)

Andere hier schienen das Problem zu lösen, indem sie sicherstellten, dass DiscourseEmbed.discourseEmbedUrl mit der verweisenden URL übereinstimmte, aber ich habe überprüft, dass dies weiterhin korrekt ist. Ich habe mich in den Discourse-Logs umgesehen (sollte ich nach /var/discourse/shared/standalone/log/rails/production.log suchen?), aber auch dort keine Fehler gefunden. Habt ihr weitere Ideen, wo man zur Fehlerbehebung suchen könnte?

Ein Beispiel aus den Discourse-Logs:

Started GET "/embed/comments?embed_url=https%3A%2F%2Ftest.comses.net%2Fcodebases%2Ff0613922-9cb1-4656-a26c-af57f823fb69%2Freleases%2F3.2.0%2F" for 72.201.57.141 at 2020-08-05 05:15:40 +0000
Processing by EmbedController#comments as HTML
  Parameters: {"embed_url"=>"https://test.comses.net/codebases/f0613922-9cb1-4656-a26c-af57f823fb69/releases/3.2.0/"}
  Rendering embed/loading.html.erb within layouts/embed
  Rendered embed/loading.html.erb within layouts/embed (Duration: 0.4ms | Allocations: 134)
Completed 200 OK in 91ms (Views: 1.8ms | ActiveRecord: 0.0ms | Allocations: 16308)
Started GET "/service-worker-c8000968830b6f6bd33f1e842dffdd569664119d449f93dc7d428d963a71635d.js" for 72.201.57.141 at 2020-08-05 05:15:42 +0000
Processing by StaticController#service_worker_asset as */*
  Rendering text template
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Completed 200 OK in 27ms (Views: 1.3ms | ActiveRecord: 0.0ms | Allocations: 6617)

Ich habe das gleiche Problem. Man kann dies live z. B. hier sehen: Making sure you're not a bot!, wo unten eine eingebettete Diskussion von @mock/mock - Fedora Discussion angezeigt wird. Beachten Sie, dass discussion.fedoraproject.org eine kostenpflichtige Instanz ist, die als Dienst von Discourse bereitgestellt wird.

Was mich verwirrt, ist, dass die Diskussion manchmal geladen wird und manchmal nicht. Ich kann das Problem (fast immer) im privaten Modus von Firefox (Version 80) reproduzieren.

Das Entwicklertool zeigt Folgendes an:

Beim Laden von „@mock/mock - Fedora Discussion

Es sieht so aus, als wäre das Thema, auf das Sie unter https://discussion.fedoraproject.org/t/mock-mock/3107 verlinkt haben, in einer geschützten Kategorie – als anonymer Benutzer kann ich es nicht aufrufen. Solange Ihr Discourse-Forum und Ihre Website dieselbe Root-Domain teilen, würde ich erwarten, dass eingebettete Kommentare für Benutzer, die im Forum angemeldet sind, geladen werden, aber für Benutzer, die nicht angemeldet sind, nicht geladen werden. Trifft das auf das zu, was Sie beobachten?

1 „Gefällt mir“

Ich würde erwarten, dass eingebettete Kommentare für Nutzer geladen werden, die im Forum angemeldet sind, aber nicht für Nutzer, die nicht angemeldet sind. Klingt das so, als ob es dem entspricht, was Sie beobachten?

Das scheint tatsächlich der Fall zu sein. Ich kann dieses Verhalten sowohl in Google Chrome als auch in Firefox reproduzieren. In einem privaten Modus beider Browser wird die Diskussion jedoch nicht geladen; ich weiß nicht, ob das etwas bedeutet. Aber ich vermute, es weist uns dennoch darauf hin, die Kategorie zu aktualisieren, damit sie von allen gesehen werden kann.

1 „Gefällt mir“

Danke. Nachdem ich die Kategorie bearbeitet und im Reiter „Sicherheit“ festgelegt habe, dass „jeder“ „erstellen/antworten/anzeigen“ darf, funktioniert die Einbettung wieder.

2 „Gefällt mir“

Nach dem neuesten Discourse-Update melden alle eingebetteten Seiten nun einen Fehler :sweat_smile:

Eine typische Fehlermeldung, die wir jetzt sehen, lautet etwa so, was darauf hindeutet, dass der Browser den Referer entfernt und dadurch der Discourse-Einbettungscode seine Validierungsprüfungen nicht besteht:

Referer: `https://www.comses.net/`

Der Referer wurde entweder nicht gesendet oder stimmte mit keinem der folgenden Hosts überein:

* www.comses.net/codebases/.*

Beispielseite: Artificial Anasazi

In Chrome erscheint die Referer-Fehlermeldung selbst dann, wenn Privacy Badger und alle anderen Erweiterungen deaktiviert sind. Das liegt wahrscheinlich an A new default Referrer-Policy for Chrome - strict-origin-when-cross-origin  |  Blog  |  Chrome for Developers UPDATE: Dies funktioniert jetzt für bestehende Themen, nachdem dem Ursprungs-Server (z. B. https://www.comses.net) eine explizite Referrer-Policy hinzugefügt wurde. Für HAProxy sieht das beispielsweise so aus: http-response set-header Referrer-Policy "no-referrer-when-downgrade"

In Firefox und Chrome funktionieren Seiten mit bestehenden Themen, aber Seiten, die versuchen, ein neues Thema zu erstellen, schlagen fehl, wie hier: The Bronze Age Collapse model (BACO model).

Ich habe unsere HAProxy-Konfiguration geändert, um Antwort-Header für Content-Security-Policy frame-ancestors festzulegen. Dadurch wurde der Fehler „invalid X-Frame-Options ALLOWALL not recognized

Das passiert mir auch. Hoffentlich kann hier jemand bei diesem Fehler ein wenig helfen. In meinem Fall habe ich einen Testblog und einen offiziellen Blog – beide mit Webflow erstellt. Im Testblog funktioniert alles einwandfrei, aber im Live-Blog wirft er diesen Fehler:

### Fehler beim Einbetten


Referer: `https://www.pynk.io/blog/what-to-invest-in-look-around-you`

Der Referer wurde entweder nicht gesendet oder stimmt mit keinem der folgenden Hosts überein:

[Leerraum hier]

Entschuldige die späte Antwort. Könntest du versuchen, discourseReferrerPolicy: 'no-referrer-when-downgrade' zum DiscourseEmbed-Objekt hinzuzufügen, das im Code-Snippet für die Einbettung festgelegt ist? Ein vollständiges Beispiel für ein Code-Snippet, das diese Eigenschaft hinzufügt, findest du hier: Embed Discourse comments on another website via Javascript - #353.

Lass uns bitte wissen, ob dies das Problem für dich löst.

Ich denke, dies wurde hier gelöst: Embed Discourse comments on another website via Javascript - #365. In diesem Fall lag das Problem an einem fehlenden www-Subdomain-Eintrag für den einbettbaren Discourse-Host.

Edit: Dieses Problem wurde nun im Kern-Code von Discourse behoben. Es ist nicht mehr erforderlich, die Variable discourseReferrerPolicy auf 'no-referrer-when-downgrade' zu setzen. Discourse setzt die Referrer-Richtlinie jetzt standardmäßig auf 'no-referrer-when-downgrade'. Weitere Details dazu findest du unter https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963#setting-the-referrer-policy.

3 „Gefällt mir“

Das Hinzufügen von discourseReferrerPolicy hat das Problem behoben – danke, @simon !! :100:

1 „Gefällt mir“

Dies könnte Probleme mit SSO verursachen. Ich habe eine current.discourse.example, die sso.discourse.example als SSO-Host verwendet. Wenn Sie angemeldet sind, wird die Themenliste korrekt angezeigt. Wenn Sie jedoch anonym sind, wird dies nicht angezeigt und der oben genannte Fehler erscheint. Die URL /embed/topics?... zeigt eine leere Seite an.

Ich denke – oder hoffe –, dass dies mit folgendem behoben werden sollte:

Content-Security-Policy: frame-ancestors https://current.discourse.example https://sso.discourse.example;
1 „Gefällt mir“