Отключить проверку жесткого MIME-кода Chrome

Есть ли способ отключить strict MIME type checking в Chrome.

На самом деле я делаю запрос JSONP на кросс-домен. Он отлично работает на Firefox, но, используя хром, дает некоторую ошибку в консоли.

Отказался от выполнения script из https://example.com ', потому что его тип MIME (' text/plain ') не является исполняемым, и включена строгая проверка типа MIME.

Он отлично работает в Mozilla. Проблема возникает только в хроме.

Вот ответ Заголовки запроса.

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

Обходное решение, что я думаю: Внешняя настройка типа контента на application/javascript

Ответы

Ответ 1

Сервер должен ответить на правильный MIME-тип для JSONP application/javascript, и ваш запрос должен указать jQuery, который вы загружаете JSONP dataType: 'jsonp'

Подробнее см. этот ответ. Вы также можете посмотреть этот, поскольку он объясняет, почему загрузка .js файла с помощью text/plain не будет работать.

Ответ 2

В моем случае я отключил X-Content-Type-Options на nginx затем работает нормально. Но убедитесь, что это немного снижает ваш уровень безопасности. Было бы временно исправить.

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

Это будет то же самое для Apache.

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

Ответ 3

также была одна и та же проблема,

если вы не можете решить проблему, вы можете запустить следующую команду в командной строке
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security

Примечание: вы должны перейти к пути установки вашего Chrome.
Например: cd C:\Program Files\Google\Chrome\Application

Откроется браузер Chrome сеанса разработчика, теперь вы можете запустить свое приложение в новом браузере Chrome.
Я надеюсь, что это должно быть полезно

Ответ 4

Для пользователей Windows:

Если эта проблема возникает на вашем сервере (например: ваш пользовательский CDN) и браузер (Chrome) выдает что-то вроде ... ('text/plain') is not executable ... при попытке загрузить файл javascript...

Вот что вам нужно сделать:

  1. Откройте редактор реестра i.e Win + R > regedit
  2. Отправляйтесь на HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.js
  3. Проверьте, является ли тип контента application/javascript или нет
  4. Если нет, измените его на application/javascript и попробуйте снова

Ответ 5

Другое решение, когда файл претендует на другое расширение

Я использую php внутри файла var.js с этим .htaccess.

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

Затем я пишу PHP-код в файл .js

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

Когда я получил предупреждение о MIME-типе в Chrome, я исправил его, добавив строку заголовка Content-Type в файл .js(but php).

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

Браузер не будет выполнять файл .js потому что apache отправляет заголовок Content-Type этого файла как application/x-httpd-php, определенный в .htaccess. Это причина безопасности. Но apache не будет выполнять php, поскольку htaccess командует олицетворением, это необходимо. Поэтому нам нужно перезаписать заголовок apache Content-Type заголовком функции php header(). Я думаю, что apache перестает отправлять свой собственный заголовок, когда php отправляет его вместо apache раньше.