Evidenziazione codice fallita per bunny.net CDN

Qualcuno si è lamentato del fatto che l’evidenziazione del codice non funziona sul loro sito. Ho replicato il problema sul mio. Il problema sembra essere che il CDN è bloccato dalla policy CORS:

image

Ho risolto il problema aggiungendo js all’impostazione “aggiungi header cors” nella pagina cors:

Se abilitato, bunny.net aggiungerà automaticamente gli header CORS (Cross-Origin Resource Sharing) a tutte le richieste di file con estensioni dall’elenco.

Questo post serve a documentarlo nel caso in cui qualcun altro abbia problemi con un CDN bunny.net e per assicurarmi di aver capito bene.

6 Mi Piace

Credo che ci sia (o ci fosse) un’impostazione in bunny che aggiungeva js a cors? Io (per qualche motivo) ho aggiunto js a cors per tutte le mie risorse bunny.net ma non ricordo di averle aggiunte io stesso. È un sito abbastanza nuovo?

4 Mi Piace

Il sito in cui l’hanno notato per la prima volta esiste da molto tempo (non ricordo quando hanno iniziato a usare bunny).
Non sono sicuro se bunny sia cambiato o se qualcosa nello script incluso sia cambiato.

2 Mi Piace

La modifica che ha reso questo evidente è stata molto probabilmente DEV: Modernise highlightjs loading (#24197) · discourse/discourse@0878dde · GitHub, che ha spostato highlightjs per caricarsi tramite import() nativo, il che richiede header CORS quando si recuperano dati da una CDN.

Ma anche prima di tale modifica, probabilmente avresti avuto alcuni problemi con elementi come i font personalizzati (che richiedono anche header CORS per richieste cross-origin).

In teoria, Discourse stesso dovrebbe aggiungere l’header CORS alle risposte della CDN. Se non lo fa, ciò probabilmente significa che la tua CDN non sta impostando il nome host della CDN (cioè non il nome host del forum) nell’header Host o nell’header X-Forwarded-Host.

Detto questo, aggiungere gli header tramite la configurazione della CDN ottiene probabilmente lo stesso risultato :ok_hand:

4 Mi Piace

Questo argomento è stato chiuso automaticamente 30 giorni dopo l’ultima risposta. Non sono più consentite nuove risposte.