Refused to execute script, strict MIME type checking is enabled?

JavascriptJson

Javascript Problem Overview


Why am I getting this error in console?

> Refused to execute script from > 'https://www.googleapis.com/customsearch/v1?key=API_KEY&q=flower&searchType=image&fileType=jpg&imgSize=small&alt=json'; > because its MIME type ('application/json') is not executable, and > strict MIME type checking is enabled.

Javascript Solutions


Solution 1 - Javascript

You have a <script> element that is trying to load some external JavaScript.

The URL you have given it points to a JSON file and not a JavaScript program.

The server is correctly reporting that it is JSON so the browser is aborting with that error message instead of trying to execute the JSON as JavaScript (which would throw an error).


Odds are that the underlying reason for this is that you are trying to make an Ajax request, have hit a cross origin error and have tried to fix it by telling jQuery that you are using JSONP. This only works if the URL provides JSONP (which is a different subset of JavaScript), which this one doesn't.

The same URL with the additional query string parameter callback=the_name_of_your_callback_function does return JavaScript though.

Solution 2 - Javascript

In my case it was a file not found, I typed the path to the javascript file incorrectly.

Solution 3 - Javascript

This result is the first that pops-up in google, and is more broad than what's happening here. The following will apply to an express server:

I was trying to access resources from a nested folder.

Inside index.html i had

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

The static route was mounted at :

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

But the script.js is located in the nested folder as in: js/myStaticApp/script.js refused to execute script, meme type checking is enabled. I just changed the static route to:

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

Now it works :)

Solution 4 - Javascript

Try to use express.static() if you are using Node.js.

You simply need to pass the name of the directory where you keep your static assets, to the express.static middleware to start serving the files directly. For example, if you keep your images, CSS, and JavaScript files in a directory named public, you can do as below −

i.e. : app.use(express.static('public'));

This approach resolved my issue.

Thanks,

Solution 5 - Javascript

After searching for a while I realized that this error in my Windows 10 64 bits was related to JavaScript. In order to see this go to your browser DevTools and confirm that first. In my case it shows an error like "MIME type ('application/javascript') is not executable".

If that is the case I've found a solution. Here's the deal:

  1. Borrowing user "ilango100" on https://github.com/jupyterlab/jupyterlab/issues/6098:

> I had the exact same issue a while ago. I think this issue is specific to Windows. It is due to the wrong MIME type being set in Windows registry for javascript files. I solved the issue by editing the Windows registry with correct content type:

> regedit -> HKEY_LOCAL_MACHINE\Software\Classes -> You will see lot of folders for each file extension -> Just scroll down to ".js" registry and select it -> On the right, if the "Content Type" value is other than application/javascript, then this is causing the problem. Right click on Content Type and change the value to application/javascript

> enter image description here

> Try again in the browser."

After that I've realized that the error changes. It doesn't even open automatically in the browser anymore. PGAdmin, however, will be open on the side bar (close to the calendar/clock). By trying to open in the browser directly ("New PGAdmin 4 window...") it doesn't work either.

FINAL SOLUTION: click on "Copy server URL" and paste it on your browser. It worked for me!

EDIT: Copying server URL might not be necessary, as explained by Eric Mutta in the comment below.

Solution 6 - Javascript

In my case, I was working on legacy code

and I have this line of code

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

I was confused about how this supposed to work this code was calling PHP file not js

despite it was working on the live server

but I have this error on the stage sever

and the content type was

content-type: text/html; charset=UTF-8

enter image description here

even it is text/javascript in the script tag

and after I added

header('Content-Type: text/javascript');

at the beginning for file i18n.js.php

the error is fixed

enter image description here

Solution 7 - Javascript

I accidentally named the js file .min instead of .min.js ...

Solution 8 - Javascript

Python flask

On Windows, it uses data from the registry, so if the "Content Type" value in HKCR/.js is not set to the proper MIME type it can cause your problem.

Open regedit and go to the HKEY_CLASSES_ROOT make sure the key .js/Content Type has the value text/javascript

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

HKEY_CLASSES_ROOT\.js
    Content Type    REG_SZ    text/javascript

Solution 9 - Javascript

I had my web server returning:

Content-Type: application\javascript

and couldn't for the life of me figure out what was wrong. Then I realized I had the slash in the wrong direction. It should be:

Content-Type: application/javascript

Solution 10 - Javascript

In my case (React app), just force cleaning the cache and it worked.

Solution 11 - Javascript

In my case Spring Security was looking for authentication before allowing calls to external libraries. I had a folder /dist/.. that I had added to the project, once I added the folder to the ignore list in my WebSecurityConfig class, it worked fine.

web.ignoring().antMatchers("/resources/**", "/static/**", "/css/**", "/js/**", "/images/**", "/error", "/dist/**");

Solution 12 - Javascript

Check for empty src in script tag.

In my case, i was dynamically populating src from script(php in my case), but in a particular case src remained empty, which caused this error. Out was something like this:

 <script src=""></script> //empty src causes error

So instead of empty src in script tag, I removed the script tag all together. Something like this:

if($src !== ''){
    echo '<script src="'.$src.'"></script>';
}  

Solution 13 - Javascript

My problem was that I have been putting the CSS files in the scripts definition area just above the end of the Try to check the files spots within your pages

Solution 14 - Javascript

I am using SpringMVC+tomcat+React

@Anfuca's answer does not work for me(force cleaning the browser's cache)

I used Filter to forward specific url pattern to the React's index.html

public class FrontFilter extends HttpFilter {
    @Override
    protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
        boolean startsWithApi = requestURI.startsWith("/api/");
        boolean isFrontendUri = requestURI.startsWith("/index.html");

        if (!startsWithApi && !isFrontendUri) {
            req.getRequestDispatcher("/index.html").forward(req, res);
        }

        super.doFilter(wrapped, res, chain);
    }
}

There is no Spring Security problem bcs my filter executes before Spring Security's

but I still see the same error and find here

Then I realized that I forgot adding one more condition for JS and CSS:

boolean startsWithStatic = requestURI.startsWith(contextPath + "/static");

Add this to my if condition and problem solved, no more error with MIME type or ('text/html') with js and css

Root cause is that I incorrectly forward JS and CSS type to HTML type

Solution 15 - Javascript

In my case I had a symlink for the 404'd file and my Tomcat was not configured to allow symlinks.

I know that it is not likely to be the cause for most people, but if you are desperate, check this possibility just in case.

Solution 16 - Javascript

Add the code snippet as shown below to the entry html. i.e "index.html" in reactjs

<div id="wrapper"></div>
<base href="/" />

Solution 17 - Javascript

If you have a route on express such as:

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

Try to change it for something more specific:

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

For example.

Or else you just might find yourself recursively serving the same HTML template over and over...

Solution 18 - Javascript

I hade same problem then i fixed like this

change "text/javascript"

to

type="application/json"

Solution 19 - Javascript

I solved my problem by adding just ${pageContext.request.contextPath} to my jsp path . in stead of :

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

I set :

 <script    src="${pageContext.request.contextPath}/static/js/jquery-3.2.1.min.js"></script>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionrob.mView Question on Stackoverflow
Solution 1 - JavascriptQuentinView Answer on Stackoverflow
Solution 2 - JavascriptmruanovaView Answer on Stackoverflow
Solution 3 - JavascriptAIonView Answer on Stackoverflow
Solution 4 - JavascriptNimeshView Answer on Stackoverflow
Solution 5 - Javascriptaraujo.jpcView Answer on Stackoverflow
Solution 6 - JavascriptAhmed BermawyView Answer on Stackoverflow
Solution 7 - JavascriptOZZIEView Answer on Stackoverflow
Solution 8 - JavascriptDevandranView Answer on Stackoverflow
Solution 9 - JavascriptRyan ShillingtonView Answer on Stackoverflow
Solution 10 - JavascriptAnfucaView Answer on Stackoverflow
Solution 11 - JavascriptsemiColonView Answer on Stackoverflow
Solution 12 - JavascriptCodeChariView Answer on Stackoverflow
Solution 13 - JavascriptHoussine Ayedi View Answer on Stackoverflow
Solution 14 - JavascriptJon WangView Answer on Stackoverflow
Solution 15 - Javascripts1m3nView Answer on Stackoverflow
Solution 16 - JavascriptOseni AdefemiView Answer on Stackoverflow
Solution 17 - JavascriptArielView Answer on Stackoverflow
Solution 18 - JavascriptMH FuadView Answer on Stackoverflow
Solution 19 - JavascriptYassine BsfView Answer on Stackoverflow