56 votes

Désactiver la vérification stricte du type MIME par Chrome

Y a-t-il un moyen de désactiver strict MIME type checking en Chrome.

En fait, je fais une demande JSONP sur un domaine croisé. Cela fonctionne bien sur Firefox mais, en utilisant Chrome, cela donne une erreur dans la console.

Refus d'exécuter le script de ' https://example.com parce que son type MIME ('text/plain') n'est pas exécutable et que la vérification stricte du type MIME est activée.

Il fonctionne parfaitement dans Mozilla. Le problème ne se pose que dans Chrome

Voici les en-têtes de réponse de la demande

Cache-Control:no-cache, no-store
Connection:Keep-Alive
Content-Length:29303
Content-Type:text/plain;charset=ISO-8859-1
Date: xxxx
Expires:-1
Keep-Alive:timeout=5
max-age:Thu, 01 Jan 1970 00:00:00 GMT
pragma:no-cache
Set-Cookie:xxxx
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN

Solution de rechange, selon moi : Paramétrage externe de content-type à application/javascript

0 votes

Avez-vous déjà vu cette question similaire ? stackoverflow.com/questions/17341122/

1 votes

@Rory McCrossan oui... ces questions font référence à la récupération du fichier depuis github... et il existe une solution alternative pour exporter le fichier au format zip....

0 votes

Quel est le contenu que vous envoyez en texte brut ?

14voto

Grégoire Fruleux Points 585

Le serveur doit répondre avec le type MIME correct pour JSONP. application/javascript et votre requête devrait indiquer à jQuery que vous chargez JSONP dataType: 'jsonp'

Veuillez consulter cette réponse pour plus de détails ! Vous pouvez également Jetez un coup d'œil à celui-ci car il explique pourquoi le chargement .js avec text/plain ne fonctionnera pas.

13voto

kujiy Points 1867

Dans mon cas, j'ai désactivé X-Content-Type-Options sur nginx alors ça marche bien. Mais assurez-vous que cela diminue un peu votre niveau de sécurité. Ce serait une solution temporaire.

# Not work
add_header X-Content-Type-Options nosniff;
# OK (comment out)
#add_header X-Content-Type-Options nosniff;

Ce sera la même chose pour apache.

<IfModule mod_headers.c>
  #Header set X-Content-Type-Options nosniff
</IfModule>

1 votes

Cette solution fonctionne bien pour moi <IfModule mod_headers.c> #Header set X-Content-Type-Options nosniff </IfModule>.

9 votes

Bien sûr, réduire la sécurité de votre site, au lieu de résoudre le problème réel ! Voir : stackoverflow.com/questions/18337630/

5voto

Ozesh Points 2383

Pour les utilisateurs de Windows :

Si ce problème se produit sur votre serveur auto-hébergé ( eg : votre CDN personnalisé) et le navigateur (Chrome) dit quelque chose comme ... ('text/plain') is not executable ... en essayant de charger votre fichier javascript ...

Voici ce que vous devez faire :

  1. Ouvrez l'éditeur du registre i.e Win + R > regedit
  2. Rendez-vous sur le site HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.js
  3. Vérifier si le type de contenu est application/javascript ou non
  4. Si ce n'est pas le cas, changez-le en application/javascript et essayez à nouveau

0 votes

Il n'était pas là, je l'ai créé et redémarré mais hélas, même erreur. Edit : Je le faisais pour pgadmin4 et je l'ai trouvé dans la faq. pgadmin.org/faq ils suggèrent text/javascript

3voto

Fresher Points 44

J'ai eu le même problème une fois,

Si vous ne parvenez pas à résoudre le problème, vous pouvez exécuter la commande suivante sur la ligne de commande
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security

Note : vous devez naviguer vers le chemin d'installation de votre chrome.
Par exemple : cd C:\Program Files\Google\Chrome\Application

Une session développeur du navigateur chrome sera ouverte, vous pouvez maintenant lancer votre application sur le nouveau navigateur chrome.
J'espère que cela vous sera utile

0 votes

D'accord. Mais seulement pour le développement Pour la production, ajoutez les types mime appropriés.

8 votes

À partir de cette date, ce drapeau ne fonctionne plus pour désactiver la vérification du type MIME.

0voto

kujiy Points 1867

Une autre solution lorsqu'un fichier prétend avoir une autre extension

J'utilise php à l'intérieur de var.js avec ce .htaccess .

<Files var.js>
    AddType application/x-httpd-php .js
</Files>

Ensuite, j'écris du code php dans le fichier .js.

<?php
// This is a `.js` file but works with php
echo "var js_variable = '$php_variable';";

Lorsque j'ai eu l'avertissement sur le type MIME dans Chrome, je l'ai corrigé en ajoutant une balise Content-Type dans la ligne d'en-tête de la .js(but php) fichier.

<?php
header('Content-Type: application/javascript');        // <- Add this line
// This is a `.js` file but works with php
...

Un navigateur n'exécute pas .js car apache envoie le fichier Content-Type de l'en-tête du fichier comme application/x-httpd-php qui est défini dans .htaccess . C'est une raison de sécurité. Mais Apache n'exécutera pas le php aussi loin que possible. htaccess commande l'impersonation, c'est nécessaire. Donc nous devons écraser le fichier d'apache Content-Type l'en-tête avec la fonction php header() . Je suppose qu'apache cesse d'envoyer son propre en-tête lorsque php l'envoie à la place d'apache auparavant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X