wir nutzen Discourse-Embedding für Jekyll unter New ROOT Web Site! - ROOT – das funktioniert einwandfrei! Außer: Der Browser unterdrückt den Referer:-Header, und dann erhalten wir eine 400 Bad Request. Probieren Sie es selbst aus: Wenn Sie ein privates Firefox-Fenster öffnen (das Referer unterdrückt), funktioniert das Embedding nicht. Gleiches gilt für Safari, das bei der Weitergabe von Referern offenbar etwas strenger ist.
Ich habe das überprüft, indem ich in einem privaten Firefox-Fenster New ROOT Web Site! - Blog - ROOT Forum aufgerufen habe, was mir einen HTTP 400-Fehler zurückgab. Anschließend habe ich die Anfrage bearbeitet und Referer: https://root.cern/blog/new-web-site/ hinzugefügt – und aus dem 400 wurde ein glücklicher 200er.
Es ist interessant, dass eingebettete Kommentare unter https://blog.codinghorror.com/the-cloud-is-just-someone-elses-computer/ in einem privaten Firefox-Fenster problemlos funktionieren. Könnte das Problem mit der Domain zusammenhängen? Dein Blog befindet sich auf root.cern und dein Formular auf root-forum.cern.ch.
danke, dass du dir das angesehen hast! Das könnte sehr gut mit dem Unterschied bei den Domainnamen zusammenhängen: Ich könnte mir vorstellen, dass Browser Referrer für Anfragen an dieselbe Domain bereitstellen, aber nicht an eine andere Domain. Aber obwohl das interessant ist, sehe ich noch nicht, was wir tun können, um das zu beheben – wir werden root.cern nicht als Forum-Domain verwenden können, und diese übergreifende Einbettung schien eine wichtige und super nützliche Funktion zu sein… Ist das heutzutage einfach aufgrund verbesserter Privatsphäre gefährdet, oder fällt dir eine Lösung ein?
Etwas, das ich versuchen könnte, ist ein Reverse-Proxy von root.cern/forum zu root-forum.cern.ch. Auf diese Weise kann die Einbettung so erfolgen, als ob sie auf demselben Host liegt, und wir behalten einen Referrer…? Ich bin gleich wieder da
Für das Cross-Site-Embedding fügen Sie auf den einbettenden Seiten entweder hinzu:
<meta name="referrer" content="strict-origin"> mit einer Path Allowlist, die auf /.* gesetzt ist (da kein Pfad übermittelt wird), oder
<meta name="referrer" content="no-referrer-when-downgrade"> mit der tatsächlichen Path Allowlist.
Wie in Referrer-Policy header - HTTP | MDN erwähnt, „arbeiten Browser daran, einen strengeren Standardwert einzuführen“, und das Discourse-Embedding verlässt sich für das Cross-Host-Embedding noch auf den alten Standard.
Nur eine Warnung, Tejas – meines Wissens unterdrücken Safari und Firefox im privaten Modus den Referer-Header vollständig, wenn das meta-Tag fehlt. Was du vorschlägst, könnte für Chrome >= 85 funktionieren, aber das Hinzufügen des meta-Tags wirkt robuster und allgemeiner. Ich vermute zudem, dass dies für die meisten Einbettungen ausreichend trivial ist.