Risorsa bloccata a causa della mancata corrispondenza del tipo MIME (X-Content-Type-Options: nosniff)


92

Sto sviluppando una pagina web utilizzando JavaScript e HTML, tutto funzionava bene quando ho ricevuto questo elenco di errori dalla mia pagina HTML:

The resource from “https://raw.githubusercontent.com/dataarts/dat.gui/master/build/dat.gui.min.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/CanvasRenderer.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/Projector.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).

Questi errori sono apparsi dopo un aggiornamento automatico del browser (Mozilla Firefox), potrebbe essere stato modificato qualcosa nella configurazione. Conosci un modo per risolvere questo problema?


11
Non caricare file da GitHub. Utilizza invece un CDN.
SLaks

Risposte:


76

Controlla se il percorso del file è corretto e il file esiste - nel mio caso era quello il problema - quando l'ho risolto, l'errore è scomparso


Sto anche affrontando lo stesso problema e il file non è presente nella directory pub. Cosa dovrei fare? È un file del tema personalizzato.
saiid

@SaiidatRLTSquare se il file non esiste dovresti trovarlo da qualche parte e metterlo lì - o se quel file non è importante - rimuovi semplicemente la riga che lo include (o crea un file vuoto) così non darà un errore
dav

L'utilizzo di Passenger con Node ha annullato i miei percorsi di build, l'aggiornamento dei percorsi lo ha risolto. Grazie!
Aaron Belchamber

29

Questo può essere risolto cambiando il tuo URL, esempio male:

https://raw.githubusercontent.com/svnpenn/bm/master/yt-dl/yt-dl.js
Content-Type: text/plain; charset=utf-8

Esempio buono:

https://cdn.rawgit.com/svnpenn/bm/master/yt-dl/yt-dl.js
content-type: application/javascript;charset=utf-8

rawgit.com è un servizio proxy di caching per GitHub. Puoi anche andare lì e derivare in modo interattivo un URL corrispondente per il tuo URL raw.githubusercontent.com originale . Vedi le sue FAQ


3
Nell'addess raw.githubusercontent.comè sostituito dal cdn.rawgit.comquale risponderà con il tipo MIME corretto.
Axel Guilmin

rawgit si sta spegnendo. puoi utilizzare jsdeliver come spiegato nella seguente risposta :
stackoverflow.com/a/64456518/9640177

15

Abbiamo iniziato ad affrontare questo errore in produzione dopo che il nostro team devops ha modificato la configurazione del server web aggiungendo X-Content-Type-Options: nosniff. Ora, a causa di ciò, il browser è stato costretto a interpretare le risorse come menzionato nel content-typeparametro delle intestazioni di risposta.

Ora, dall'inizio, il nostro server delle applicazioni impostava esplicitamente il tipo di contenuto dei file js come text/plain. Da,X-Content-Type-Options: nosniff non era impostato nel server web, il browser interpretava automaticamente i file js come file JavaScript sebbene il tipo di contenuto fosse menzionato come text / plain. Questo è chiamato sniffing MIME. Ora, dopo aver impostato X-Content-Type-Options: nosniff, il browser è stato costretto a non eseguire lo sniffing MIME e ad accettare il tipo di contenuto come menzionato nelle intestazioni di risposta. A causa di ciò, ha interpretato i file js come file di testo normale e ha negato di eseguirli o li ha bloccati. Lo stesso è mostrato nei tuoi errori.

Soluzione: è fare in modo che il server imposti i content-typefile JS come

application/javascript;charset=utf-8

In questo modo, caricherà normalmente tutti i file JS e il problema verrà risolto.


Dove devo impostare il tipo di contenuto del server, voglio dire quale file devo mantenere, sto usando il server Tomcat 8.5
Bhaskara Arani

Tutto dipende dall'architettura dell'applicazione. Nel nostro caso, era una semplice vecchia applicazione monolitica basata su servlet. Quindi, veniva impostato proprio lì nel metodo di servizio.
Manish Bansal

Che ne dici invece di cambiare l'HTML?
Aaron Franke

Scusate. Non ti ho capito. Qui non c'era l'html. Avevamo un'applicazione basata su servlet. Che cambiamento stai suggerendo in html?
Manish Bansal

12

controlla il tuo percorso, questo errore verrà se il file non esisteva nel percorso specificato.


7

Stai usando Express?

Controlla il tuo percorso (nota " /" dopo / public /):

app.use(express.static(__dirname + "/public/"));

// nota: non è necessario il "/" prima di "css" perché è già incluso sopra:

rel="stylesheet" href="css/style.css

Spero che sia di aiuto


5

Per Wordpress

Nel mio caso ho appena perso la barra "/" dopo get_template_directory_uri () quindi il percorso risultante / generato era sbagliato: Il

mio codice errato:

wp_enqueue_script( 'retina-js', get_template_directory_uri().'js/retina.min.js' ); 

Il mio codice corretto:

wp_enqueue_script( 'retina-js', get_template_directory_uri().'/js/retina.min.js' );

3

Ciò potrebbe essere dovuto al fatto che il browser non può accedere a un file. Mi sono imbattuto in questo tipo di errore durante la creazione dell'applicazione con node.js. Puoi provare a richiedere direttamente il file di script (copiando e incollando l'URL) e vedere se riesci a recuperarlo. Puoi vedere allora qual è il vero problema. Può essere a causa del permesso della cartella in cui si trova il file, o il browser non riesce a trovarlo a causa di un percorso errato. In node.js, dopo aver specificato il percorso al file, tutto funziona.


Secondo questa pagina MS sembra essere un problema di tipo MIME. Ma come si specifica il MIMEtipo in Node.js? (Non è necessario specificare i percorsi completi per tutti i file, ma solo per le directory degli asset, no?)
not2qubit

3

Potrebbe essere un percorso sbagliato. Assicurati di avere nel file dell'app principale:

app.use(express.static(path.join(__dirname,"public")));

Link di esempio al tuo css come:

<link href="/css/clean-blog.min.css" rel="stylesheet">

simile per il collegamento ai file js:

<script src="/js/clean-blog.min.js"></script>

2

Ho risolto questo problema cambiando il set di caratteri nei file js da UTF-8 senza BOM a semplice UTF-8 in Notepad ++


1

Ho riscontrato questo errore quando stavo utilizzando l'archiviazione di Azure come sito Web statico, i file js che vengono copiati avevano il tipo di contenuto as text/plain; charset=utf-8e ho cambiato il tipo di contenuto inapplication/javascript

Ha iniziato a funzionare.


0

Vedi per i protocolli HTTPS e HTTP

A volte se stai usando protocolli misti [questo accade principalmente con i callback JSONP] puoi finire in questo ERRORE.

Assicurati che sia la pagina web che la pagina delle risorse abbiano gli stessi protocolli HTTP.


0

Ho anche affrontato lo stesso problema nel server django, quindi ho cambiato DEBUG = True nel file settings.py che funziona


0

Mi è successo per tag sbagliato. Per errore aggiungo il file js nel linktag.

Esempio: (The Wrong One)

<link rel="stylesheet" href="plugins/timepicker/bootstrap-timepicker.min.js">

È stato risolto utilizzando il tag corretto per javascript. Esempio:

<script src="plugins/timepicker/bootstrap-timepicker.min.js"></script>

0

https://cdn.rawgit.com è in fase di chiusura. Pertanto, è possibile utilizzare una delle opzioni alternative. JSDeliver è un cdn gratuito che può essere utilizzato.

// carica qualsiasi versione, commit o branch di GitHub

// nota: si consiglia di utilizzare npm per i progetti che lo supportano

https://cdn.jsdelivr.net/gh/user/repo@version/file

// carica jQuery v3.2.1

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/dist/jquery.min.js

// usa un intervallo di versioni invece di una versione specifica

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2/dist/jquery.min.js

https://cdn.jsdelivr.net/gh/jquery/jquery@3/dist/jquery.min.js

// omette completamente la versione per ottenere l'ultima

// NON dovresti usarlo in produzione

https://cdn.jsdelivr.net/gh/jquery/jquery/dist/jquery.min.js

// aggiungi ".min" a qualsiasi file JS / CSS per ottenere una versione ridotta

// se non esiste, lo genereremo per te

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/src/core.min.js

// aggiungi / alla fine per ottenere un elenco di directory

https://cdn.jsdelivr.net/gh/jquery/jquery/

ref - https://www.jsdelivr.com/?docs=gh

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.