Joomla.it Forum
Joomla! 3 => Joomla! 3 => : sgiobbio 03 Apr 2019, 14:10:49
-
Da poco tempo in Joomla è stata introdotta questa patch di sicurezza inserita in .htaccess, che agisce sulle funzionalità dei browser MIME-type sniffing :
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>
Con questa "regola" le mie mappe google, che venivano "popolate" di marker e di cluster da files con estensione .json, non funzionavano più perché i files json venivano bloccati.
I file json non venivano caricati perché -diceva la console di sviluppo web- il tipo MIME (“application/json”) non è un tipo MIME JavaScript valido.
Ho provato a richiamare i file json in altro modo:
invece che type="text/javascript" ho messo type="application/json" e ho anche provato con type="application/octet-stream" ma continuavano a non essere caricati, e le mappe restavano vuote.
Alla fine, come extrema ratio, ho modificato l'estensione dei files json facendola diventare js, e in questo modo adesso funziona tutto: i files js vengono caricati e le mappe si popolano.
Le mie domande sono 2:
- è corretto e non darà luogo ad altri problemi modificare l'estensione di un file .json in .js?
- conoscete un altro modo per non fare bloccare i files json da questa patch di sicurezza?
-
1. Modificare un .json in .js non è semanticamente corretto (sono due tipi di files sostanzialmente diversi, anche se un file json è JS sintatticamente valido, altrettando non può dirsi viceversa; in questo caso ti funziona perché allo script che carica il file questo non interessa. Quindi, se vuoi scrivere un libro o usare il sito per insegnare come si fanno le cose, procedi con la risposta che segue. Altrimenti tienilo così e ignora il seguito.
2. Il problema rilevato dal tuo browser dipende dal server web, non dall'invocazione che fai del contenuto.Forse non hai impostato il tipo json nel tuo server, ad esempio se è apache e le impostazioni del tuo provider supportano questi comandi nell'.htaccess potresti cavartela aggiungendo, in un nuovo file .htaccess nella cartella dei file .js/json:
<IfModule mod_mime.c>
AddType application/json json
</IfModule>
Attenzione però! Non modificare l'.htaccess principale, perché puoi "rompere" il sito.
Sii preparato a ripristinare/eliminare il file .htaccess subito, la modifica potrebbe fare altri danni, .htaccess ha una sintassi molto delicata.
-
Grazie mille rezor per la tua risposta: qualche indicazione in più era esattamente quello che speravo di ricevere.
Dunque, fermo restando che empiricamente la modifica dell'estensione del file json in js funziona allo scopo, ho provato a seguire le tue istruzioni, perché mi piacerebbe avere del codice semanticamente corretto.
So bene che con i file .htaccess bisogna andarci con i piedi di piombo, e che il rischio di fare disastri è sempre dietro l'angolo.
Tuttavia, siccome ho già utilizzato dei file .htaccess posizionati in specifiche directories del sito (per esempio per "blindarne" l'accesso) e quindi gli .htaccess non mi "spaventano" più di tanto, ho provato a seguire le tue direttive, ma senza successo: il file json non viene caricato nemmeno in presenza del file .htaccess con il contenuto che hai suggerito, posizionato nella cartella del file che dovrebbe essere caricato.
Forse "invocando" il file json in questione bisognerebbe anche specificare un "type" differente da "text/javascript", per esempio type="application/json" oppure type="application/octet-stream" ?