0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Django】エラー「because its MIME type ('text/html') is not executable...」の原因は...リダイレクト処理に

Posted at

概要

Djangoアプリで「because its MIME type ('text/html') is not executable...」というエラーになりました。こちらの原因と解決方法を記載します。

原因

コンソールに表示されたエラー内容は以下です。

Refused to execute script from 'http://localhost/login/?next=xxxxx.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

image.png

login/...から始まるパスになっていますが、実際にアクセスしたのは、そんなパスではないです。
なぜかlogin/...にリダイレクトされてしまっている、という状況です。

なぜだろう?と思ってプロジェクトディレクトリのurls.pyをよく見てみると、

path('', admin.site.urls)

上記のように記載がありました。

ルートURL(空のパス)がDjangoのadmin(管理)サイトに飛ぶようにマッピングされてしまっています。
これが原因でした。

これにより、アプリケーションの他のすべてのURLも管理サイトにリダイレクトされてしまい、静的ファイルのリクエストも含め、アクセスがすべてlogin/?next=...にリダイレクトされることになっていたのです。

解決方法

以下のようにadmin/パスに設定することで、ルートURLが管理サイトと重複せず、意図通りに機能するようになりました。

path('admin/', admin.site.urls)

ただ、「because its MIME type ('text/html') is not executable...」エラーを調べてみると、いろいろなところで原因が様々上がっており、場合によっては原因不明というのも見かけます。というのも、実際にエラーが起きているのはDjango側の設定のどこかであって、「MIMEタイプ(ファイルの種類)がサポートされていない」エラーというわけではないことが多いからでしょう。要はエラーメッセージだけでは原因特定が難しいのではないかと思われます。

今回の私の解決方法は一例に過ぎませんが、
urls設定が間違っていないか
・正しいかパスか
・タイプミスがないか
・最近いじった箇所で怪しいところがないか
などを見直していくとヒントがあるかもしれません。

(admin参考)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?