MIME タイプは「text/html」として受信され、サーバーは「text/javascript」として送信するように設定されています

MIME タイプは「text/html」として受信され、サーバーは「text/javascript」として送信するように設定されています

Firefox と Chrome の両方で、サーバーからの JavaScript ファイルが MIME タイプ text/html として提供されていることが示されています。JavaScript ファイルの拡張子は .js です。

まず、mime_module がインストールされ、アクティブになります。

apachectl -M | grep mime
 mime_magic_module (shared)
 mime_module (shared)
Syntax OK

次に、conf ファイルに次の内容を追加します。

AddType text/css .css
AddType text/javascript .js

これを追加してみました:

<Files "*.js">
    ForceType text/javascript
</Files>

Apache を再起動しましたが、Chrome と Firefox では JavaScript ファイルがまだ「text/html」として表示されます。error.log には何も表示されず、access.log には何も有用な情報が返されません。

1.2.3.4 - - [03/Mar/2015:10:42:00 -0500] "GET /some/dir/js/app-min.js HTTP/1.1" 200 14642

以下は .js ファイルの 1 つのヘッダーです (Firefox で表示)

Connection: close
Content-Type: text/html; charset=UTF-8
Server: Apache
Strict-Transport-Security: max-age=63072000; includeSubDomains
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Permitted-Cross-Domain-Policies: master-only
X-WebKit-CSP: default-src 'self'
X-XSS-Protection: 1; mode=block

このファイルは、htmlFirefox インスペクターでタイプとして表示されます。

以下は、私のラップトップの Apache インスタンスによって提供される同じファイルのヘッダーです。

Connection: Keep-Alive
Date: Tue, 03 Mar 2015 15:43:52 GMT
Keep-Alive: timeout=5, max=95
Server: Apache/2.4.7 (Ubuntu)

このファイルは、jsFirefox インスペクタでタイプとして表示されます。Apache (2.4) のローカル インスタンスは で応答しないことに注意してくださいContent-Type

メイン サーバーが AddType を無視しているのはなぜですか? これを httpd.conf と ssl.conf の両方に追加しました (ただし、私のサイトでは 443 が強制されます)。Apache を再起動しました (構文エラーはありません)。

答え1

私も同様の問題を抱えていました。あるシステム管理者が conf.modules.d/10-php.conf に次のディレクティブを追加しました。

SetHandler application/x-httpd-php

しかし、これによりすべての拡張機能がそのハンドラーに設定されるため、次のように変更します。

AddHandler php5-script .php

問題は解決しました:)

答え2

問題は解決しました。conf.d/php.conf には次の行が含まれていました:

AddHandler php5-script .php .phtml .html .css .js
AddType text/html .php

最初の行を次のように変更しました

AddHandler php5-script .php .phtml .html
AddType text/html .php

その後、保存して Apache を再起動しました。これで、js および css ファイルが Firefox/Chrome で正しい MIME タイプで表示されるようになりました。

余談ですが、AddType text/javascript .js下記を追加してみましたAddType text/html .phpが、ファイルは引き続きtext/htmlInspector に と表示されました。正しい MIME タイプを送信するには、AddHandler から .css と .js を削除する必要がありました。

関連情報