Отключить проверку жесткого 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...
Вот что вам нужно сделать:
- Откройте редактор реестра i.e
Win + R > regedit
- Отправляйтесь на
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.js
- Проверьте, является ли тип контента
application/javascript
или нет
- Если нет, измените его на
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 раньше.