Fühlen Sie sich frei, https://sales-community-staging.rainmakers.co/sales-community/ zu besuchen, um das Problem zu sehen. Keine Garantie dafür, dass es für immer verfügbar bleibt.
Ich glaube, das liegt daran, dass /sales-community nicht zur URL hinzugefügt wird.
Lassen Sie mich wissen, ob es hilfreich wäre, app.yml oder nginx.conf bereitzustellen.
Dies ist auf version: tests-passed.
Ich habe version: stable versucht, um es zu beheben, aber es kompiliert derzeit nicht unter Docker (in einem anderen Fehlerbericht, den ich früher gesehen habe, erwähnt; ich habe von vorne begonnen, nicht herabgestuft).
Ja. Alles andere funktioniert (Beiträge erstellen, E-Mails, Avatar-Uploads, HTTPS usw.). Alle anderen Ressourcen haben korrekte URLs mit dem Unterordner /sales-community (wie im Bild gezeigt). Nur das SVG ist defekt.
Ja, das Problem liegt also nicht bei CSP, da die URL einfach falsch ist. Sie wird anscheinend nicht mit dem Unterordner-Pfad vorangestellt. Ich denke, das muss hier hinzugefügt werden: hier.
Wir haben die gesamte Logik für SVG-Sprites in Unterordner-Szenarien bereits implementiert, und sie wird von mehreren Sites erfolgreich genutzt. In diesem Fall sind wir jedoch auf einen sehr spezifischen Randfall gestoßen. Ein Blick auf die relevanten Variablen auf @vkozyrevs Site (in der Browserkonsole):
Sieht gut aus. Wenn wir nun das SVG-Sprite-Sheet laden, verwenden wir loadScript, das wiederum Discourse.getURL aufruft. Diese Funktion ist dafür zuständig, das Unterordner-Präfix hinzuzufügen. Testen wir das:
Beim weiteren Nachforschen stießen wir auf diese Zeile innerhalb von getUrl:
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
Oder auf Deutsch: „Wenn die URL bereits das Unterordner-Präfix enthält, abbrechen.“ Das Problem ist also, dass @vkozyrevs Unterordner-Präfix (/sales-community) in der Mitte der SVG-Sprite-Sheet-URL enthalten ist:
Ich habe die Prüfung nun präziser gestaltet, sodass sie nur das Unterordner-Präfix am Anfang der URL überprüft:
Das lässt mich allerdings an andere potenzielle Probleme denken… z. B. wenn jemand sein Unterordner-Präfix als /t oder /about oder eine andere URL wählen möchte, die wir in Discourse verwenden
Das ist ein erstaunlicher Randfall . Ich entwickle in Rails (nur im API-Modus). Ich bin froh, nicht allzu tief ins Kaninchenloch gestiegen zu sein – sonst wäre ich im Client-Code völlig verloren gewesen.
Falls Sie neugierig sind: Ich habe einen Proxy davor geschaltet, sodass die Subdomain sales-community für die Nutzer verborgen bleibt. Sie sehen nur /sales-community vor der URL unserer Hauptseite. Die Hauptseite läuft auf Heroku, daher kann ich nicht eine einzelne nginx-Instanz für das gesamte Routing verwenden.
Vielen Dank für die schnellen Antworten und die Lösung, zusammen mit allen anderen!