Ho appena notato che Discourse sta inserendo intestazioni Content-type errate per diversi tipi di file: i file mp4 da /uploads/ hanno content-type: application/mp4 invece di video/mp4
i miei caricamenti provenivano da S3, quindi dipende dal provider di hosting S3.
Alcuni file JavaScript (.js) ad esempio da /brotli_asset/ hanno application/javascript invece di text/javascript.
Utilizzo discourse_docker senza alcuna modifica, ho controllato nginx incluso, contiene il file di configurazione corretto per i mime-type. Sembra che sia il backend di Discourse il colpevole dellâinvio di questi mime-type errati.
Ciao! Per quanto ne so, il problema con i caricamenti era da parte mia e causato dal provider S3 (lâho risolto con successo sovrascrivendo lâimpostazione nel mio nginx). E il problema con JS da /brotli_asset/ è da qualche parte nellânginx âinternoâ di discourse, quindi sembra essere un bug in discourse_docker.
Mi vergogno, ma non sono riuscito a trovare un posto migliore per segnalare un bug di questa parte del forum. Potete indicarmi per favore?
In poche parole, Discourse invia javascript da diverse posizioni con diversi mime-type. Ad esempio, /theme-javascripts/ff3c633d0d4192c83a194066eaa9d823b5c2d8f6.js viene inviato con text/javascript (corretto) e il suddetto /brotli_asset/⌠con application/javascript. Ciò può confondere i server proxy tra Discourse e il client, nonchÊ i sistemi di analisi, dove ho notato il problema.
Sembra che tu debba solo configurare correttamente nginx interno nellâimmagine Docker di Discourse per gli asset brotli.
Nei miei report di goaccess, la dashboard dei tipi MIME di discourse ha valori divisi per js: uno per text/javascript e un altro per application/javascript.
Il secondo: sia le direttive gzip_types che brotli_types in nginx sono gestite dai tipi MIME. Quindi, per discourse, le persone devono configurare sia il corretto text/javascript che lâerrato application/javascript.
Lo stesso vale per qualsiasi proxy che ricomprime contenuti basati sul tipo MIME.
Quando si carica lâURL del video, gli header sono diversi tra unâinstallazione normale e unâinstallazione di sviluppo.
Sullâinstallazione di produzione normale, il tipo di contenuto del video è impostato su application/mp4, mentre è impostato su video/mp4 su unâinstallazione di sviluppo.
Crossposting Discourse send PDF inline perchĂŠ lâautore ha risolto un comportamento indesiderato simile con i PDF.
Sono tuttâorecchi se qualcuno ha una soluzione per impedire il download forzato dei file mp4.
Anche se, esaminando ulteriormente la nostra implementazione dellâuploader S3, vedo che stiamo aggiungendo lâintestazione Content-Disposition"attachment" per quasi tutti i caricamenti che non sono immagini, ma sembra che fosse inteso solo per gli svg. Lâuso di "attachment" comporterebbe il download del contenuto anzichĂŠ lâapertura in una nuova scheda. Per i video, è un mix di application/video e attachment che causa questo.
Possiamo almeno rimuovere questa intestazione, credo.
Quando si carica su S3, dobbiamo specificare header come Content-Disposition e Content-Type del file. Questi sono i valori che verranno restituiti al caricamento del file - PutObject - Amazon Simple Storage Service
Puoi spiegare quando sta succedendo?
La PR rimuoverĂ lâheader Content-Disposition: attachment che forza il download indipendentemente dal browser utilizzato.
Una volta aggiornato il tuo sito, verrĂ utilizzato invece Content-Type, e il browser deciderĂ cosa farne. Una cosa da notare, non câè problema con Content-Type: application/mp4 su Safari e Firefox, ma su Chrome, forza ancora un download (probabilmente a causa di una cattiva storia che Chrome ha con il tipo di file mp4).