Відмовлено виконувати сценарій, увімкнено сувору перевірку типу MIME?


89

Чому я отримую цю помилку в консолі?

Відмовлено виконувати скрипт із https://www.googleapis.com/customsearch/v1?key=API_KEY&q=flower&searchType=image&fileType=jpg&imgSize=small&alt=json , оскільки його тип MIME ('application / json') не є виконуваним і увімкнено сувору перевірку типу MIME.

Відповіді:


58

У вас є <script>елемент, який намагається завантажити якийсь зовнішній JavaScript.

Вказана вами URL-адреса вказує на файл JSON, а не на програму JavaScript.

Сервер правильно повідомляє, що це JSON, тому браузер перериває з цим повідомленням про помилку замість того, щоб намагатися виконати JSON як JavaScript (що призведе до помилки).


Швидше за все, що основною причиною цього є те, що ви намагаєтесь зробити запит Ajax, виявили помилку перехресного походження та намагалися виправити, сказавши jQuery, що ви використовуєте JSONP. Це працює, лише якщо URL-адреса надає JSONP (що є іншим підмножиною JavaScript), а цей - ні.

Однак та сама URL-адреса з додатковим параметром рядка запиту callback=the_name_of_your_callback_functionповертає JavaScript.


4
я дав це, і це виправляє помилку <script id = "data" type = "application / json"
rob.m

2
type="application/json"- Тепер браузер знає, що не намагається завантажити JavaScript, тому він повністю ігнорує елемент сценарію.
Квентін

58

У моєму випадку це був файл, який не знайдено, я неправильно ввів шлях до файлу javascript.


8
Той самий. Неправильний шлях призводить до певної відповіді на помилку html-сторінки, що в свою чергу спричиняє це заплутане повідомлення про помилку.
Gil Roitto

2
Геніальна відповідь. Дякую :)
Анжана Сільва

21

Цей результат є першим, що з’являється в Google, і є ширшим, ніж те, що тут відбувається. Для експрес-сервера застосовується наступне :

Я намагався отримати доступ до ресурсів із вкладеної папки.

Всередині у index.htmlмене було

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

Статичний маршрут був змонтований за адресою:

app.use(express.static(__dirname));

Але script.jsфайл знаходиться у вкладеній папці, як у: js/myStaticApp/script.js відмовився виконувати сценарій, перевірка типу мему увімкнена. Я щойно змінив статичний маршрут на:

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

Тепер це працює :)


6

Спробуйте використовувати express.static (), якщо ви використовуєте Node.js.

Вам просто потрібно передати ім'я каталогу, де ви зберігаєте свої статичні активи, проміжному програмному забезпеченню express.static, щоб почати безпосередньо обслуговувати файли. Наприклад, якщо ви зберігаєте свої зображення, файли CSS та JavaScript у каталозі з іменем public, ви можете зробити, як показано нижче -

тобто: app.use (express.static ('public'));

Такий підхід вирішив моє питання.

Дякую,


можливо, це не правильна відповідь на це конкретне питання, але це було рішення моєї проблеми. Дякую!
mcheah


2

Після деякого пошуку я зрозумів, що ця помилка в моїх 64-бітних Windows 10 була пов’язана з JavaScript. Щоб побачити це, перейдіть у браузер DevTools і спершу підтвердьте це. У моєму випадку він показує помилку типу "Тип MIME ('application / javascript') не виконується".

Якщо це так, я знайшов рішення. Ось угода:

  1. Користувач-позичальник "ilango100" на https://github.com/jupyterlab/jupyterlab/issues/6098 :

Я мав точно те саме питання деякий час тому. Я думаю, що ця проблема специфічна для Windows. Це пов’язано з неправильним типом MIME, встановленим у реєстрі Windows для файлів javascript. Я вирішив проблему, відредагувавши реєстр Windows із правильним типом вмісту:

regedit -> HKEY_LOCAL_MACHINE \ Software \ Classes -> Ви побачите безліч папок для кожного розширення файлу -> Просто прокрутіть вниз до реєстру ".js" і виберіть його -> Справа, якщо значення "Тип вмісту" відрізняється від application / javascript, то це спричиняє проблему. Клацніть правою кнопкою миші на Тип вмісту та змініть значення на application / javascript

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

Спробуйте ще раз у браузері ".

Після цього я зрозумів, що помилка змінюється. Він навіть не відкривається автоматично в браузері. Однак PGAdmin буде відкритий на бічній панелі (близько до календаря / годинника). При спробі відкрити браузер безпосередньо ("Нове вікно PGAdmin 4 ...") він також не працює.

ЗАКЛЮЧНЕ РІШЕННЯ: натисніть "Копіювати URL-адресу сервера" та вставте його у свій браузер. У мене це вийшло!


+1 це спрацювало для мене. Я вніс зміни в реєстр для використання application/javascriptдля .jsрозширення. Потім я закрив і знову відкрив pgAdmin, і він завантажився нормально (без копіювання URL-адреси сервера). У мене працює Windows 8.1 та PostgresSQL 13.
Ерік Мутта

1

Колба Python

У Windows він використовує дані з реєстру, тому, якщо значення "Тип вмісту" в HKCR / .js не встановлено належним типом MIME, це може спричинити вашу проблему.

Відкрийте regedit і перейдіть до HKEY_CLASSES_ROOT, переконайтесь, що ключ .js / Тип вмісту має значення text / javascript

C:\>reg query HKCR\.js /v "Content Type"

HKEY_CLASSES_ROOT\.js
    Content Type    REG_SZ    text/javascript


-1

Якщо у вас є експрес-маршрут, такий як:

app.get("*", (req, res) => {
  ...
});

Спробуйте змінити це на щось більш конкретне:

app.get("/", (req, res) => {
  ...
});

Наприклад.

Або ви можете просто виявити, що ви рекурсивно подаєте один і той же шаблон HTML знову і знову ...


-1

Я ненавиджу ту ж проблему, яку потім вирішив так

change "text/javascript"

до

type="application/json"

2
Це в першу чергу зупиняє браузер, що робить запит на URL-адресу, і робить присутність scriptелемента в документі абсолютно безглуздою.
Квентін

-1

У моєму випадку у мене було символічне посилання для файлу 404'd, і мій Tomcat не був налаштований для дозволу символічних посилань.

Я знаю, що це, швидше за все, не є причиною для більшості людей, але якщо ви відчайдушні, перевірте цю можливість про всяк випадок.


-2

у мене була та ж проблема, і проблема полягала в тому, що мені не вистачало скісної риски на моєму шляху.

я мав

і щоб виправити це, мені потрібно було лише додати скісну риску між jquery-ui та jquery-ui.min:

  <script type="text/javascript" src="js/jquery-ui/jquery-ui.min.js"></script>

сподіваюся, це допомагає: D


-12

Я вирішив свою проблему, додавши лише $ {pageContext.request.contextPath} до мого jsp-шляху. замість :

 <script    src="static/js/jquery-3.2.1.min.js"></script>

Я встановив :

 <script    src="${pageContext.request.contextPath}/static/js/jquery-3.2.1.min.js"></script>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.