Ресурс интерпретируется как скрипт, но передается с типом MIME text / plain - для локального файла

97

Я получаю предупреждение «Ресурс интерпретируется как сценарий, но передается с типом MIME text / plain» в Google Chrome при включении локального файла сценария.

Я знаю, что проблема возникает при загрузке файла с сервера или через ajax, что чаще всего зависит от установки неправильных заголовков.

Странно то, что я получаю это предупреждение, даже если оно запускается из локальной папки: file:///C:/test/foo.html

Это происходит только в Chrome с самым простым HTML:

<!DOCTYPE html>
    <html>
    <head>
        <script type="text/javascript" src="bar.js"></script>
    </head>
    <body>
    </body>
</html>

bar.js также настолько прост, насколько это возможно:

function hello() {}

Я пробовал добавить метатег:

<meta http-equiv="content-script-type" content="text/javascript">

и протестирован с другими типами документов, но ничего не помогает.

Очевидно, это не настоящая проблема, поскольку скрипты по-прежнему работают нормально, но я работаю над большим проектом, и в настоящее время в него включено около 150 скриптов. Поэтому трудно увидеть, когда между ними возникает фактическое предупреждение.

Все работает нормально, когда я запускаю файл на сервере, локальном или удаленном.

Есть идеи, почему хром меня этим раздражает?

Batzkoo
источник
вы ведь случайно не установили последнюю версию Visual Studio на днях? Это начало происходить со мной, и это единственное, что изменилось ...
Саймон Саррис
да, VS Express 2012 RC несколько недель назад. Я тоже думал об этом, поэтому вместо этого я создал файлы с помощью блокнота ++, но проблема осталась той же. Если VS вызывает это, они, должно быть, изменили какой-то глобальный параметр / параметр? Вопрос в том, что и как мне вернуть обратно?
batzkoo
Я все еще пытаюсь понять то же самое. Кажется, это глобальная вещь, и произошло это именно после того, как я установил VS2012. Я дам вам знать, если я что-нибудь выясню. Чтобы было ясно, я на самом деле не использую Visual Studio для редактирования файлов, что делает его более странным.
Саймон Саррис

Ответы:

195

Я понял!

Установщик Visual Studio должен добавить ошибочную строку в реестр.

откройте regeditи посмотрите на этот ключ реестра:

введите описание изображения здесь

Видишь этот ключ? Ключ типа контента? измените его значение с text / plain на text / javascript.

Наконец-то хром снова может дышать легко.

Я должен отметить, что ни Content Type, ни PerccedType по умолчанию отсутствуют в Windows 7, поэтому вы, вероятно, можете безопасно удалить их оба, но минимум, что вам нужно сделать, это это редактирование.

В любом случае, я надеюсь, что это исправит и вас!

Саймон Саррис
источник
8
Вы молодцы! для решения этой проблемы. Я не удалял ключ, а вместо этого изменил значение данных на text / javascript. Спасибо!
batzkoo
ха-ха, я изменил его на текст / скрипт, и это не сработало, может, мне стоило попробовать текст / JavaScript!
Саймон Саррис,
Спасибо за решение! У меня была такая же проблема ... На самом деле с типом MIME plain / text для меня код javascript выдавал ошибки. У меня было несколько строк (в массиве), содержащих буквы, найденные в кодировке UTF-8, которые встречаются в восточно-европейских языках, таких как «ő». "Gergő" - хорошее по отношению к венгерскому имени. Слава богу, ошибки тоже исчезли, так как я не мог запустить свой код, но я не исследовал это дальше.
Золтан
2
Вау, как вы узнали об этом решении?
Pakman
4
@Pakman Однажды у меня возникла проблема, потом я купил новый компьютер, и проблемы не было. Затем, когда я установил Visual Studio 2012, я заметил, что он снова появился, поэтому я решил, что это было виновником. Я подумал, что это что-то изменило в ассоциациях файлов в реестре, потому что все мои .jsфайлы имели .txtзначки поиска, поэтому я пошел, чтобы убедиться, что они связаны с правильным типом данных. Их не было!
Саймон Саррис
30

Я попытался решить эту проблему этим методом, но у меня это не сработало.

Моя проблема заключалась в том, что диспетчер IIS не имел типов MIME в функциях HTTP.

Мне удалось включить его, включив статический контекст через ...

-> Панель управления

-> Программы

-> Включение или отключение функций Windows

-> Информационные службы Интернета

-> Сервисы всемирной паутины

-> Общие функции HTTP

-> [X] Статическое содержимое.

После этого появились MIME-типы и все снова заработало.

user2383049
источник
0

Принятый ответ - отличный! Однако просто для того, чтобы опубликовать ответ для тех, кто сталкивается с такой проблемой, как я, кто иногда использует компьютер факультета / колледжа, где у меня нет разрешения изменять какое-либо значение ключа в regedit.

+ Изменить

<script type="text/javascript" src="main.js"></script>

к

<script src="main.js"></script>

Хотя сообщение об ошибке все еще существует, страница загружена правильно.

Ричард Вонг
источник
2
Но проблема OP в том, что страница загружается правильно, но он все равно получает сообщение об ошибке. Кажется, это ничего не меняет.
Teepeemm