Sentiti libero di visitare https://sales-community-staging.rainmakers.co/sales-community/ per vedere il problema. Non ci sono garanzie che rimanga attivo per sempre.
Penso che sia dovuto al fatto che non sta aggiungendo /sales-community all’URL.
Fammi sapere se fornire app.yml o nginx.conf sarebbe utile.
Questo è su version: tests-passed.
Ho provato version: stable per risolvere, ma al momento non compila su docker (menzionato in un altro rapporto di bug che ho visto prima; stavo ricominciando da capo, non stavo facendo un downgrade)
Sì. Tutto il resto funziona (pubblicazione, email, caricamento avatar, HTTPS, ecc.). Tutte le altre risorse hanno URL corretti nella sottocartella /sales-community (come mostrato nell’immagine). Solo l’SVG è rotto.
Sì, quindi il problema non è legato alla CSP perché l’URL è semplicemente errato; a quanto pare non viene preceduto dal percorso della sottocartella. Credo che debba essere aggiunto qui.
Abbiamo già tutta la logica necessaria per gli sprite SVG nei casi di sottocartelle, ed è utilizzata con successo da diversi siti. In questo caso, però, ci siamo imbattuti in un caso limite molto specifico. Controllando le variabili chiave nel sito di @vkozyrev (nella console del browser):
Tutto sembra corretto. Ora, quando carichiamo il foglio degli sprite SVG, utilizziamo loadScript, che a sua volta chiama Discourse.getURL. Questa funzione è responsabile dell’aggiunta del prefisso della sottocartella. Proviamo:
Un’ulteriore indagine rivela questa riga all’interno di getUrl
if (url.indexOf(Discourse.BaseUri) !== -1) return url;
Ovvero, in italiano: “se l’URL contiene già il prefisso della sottocartella, desisti”. Quindi il problema qui è che il prefisso della sottocartella di @vkozyrev (/sales-community) è incluso a metà dell’URL del foglio degli sprite SVG
Ho reso il controllo più specifico, in modo che verifichi il prefisso della sottocartella solo all’inizio dell’URL:
Ciò mi fa però pensare ad altre potenziali problematiche… ad esempio, se qualcuno volesse impostare il proprio prefisso di sottocartella come /t o /about, o qualsiasi altro URL utilizzato in Discourse
Questo è un caso limite incredibile . Sviluppo in Rails (solo modalità API), sono contento di non essere andato troppo in profondità nella tana del coniglio, altrimenti mi sarei perso nel codice client.
Nel caso foste curiosi, ho un proxy davanti a questo, quindi il sottodominio sales-community è nascosto agli utenti: vedranno solo /sales-community all’inizio dell’URL del nostro sito principale. Il sito principale è su Heroku, quindi non posso usare un’unica istanza di nginx per instradare tutto.
Grazie per le risposte rapide e per la correzione a tutti!