移行後のApache環境でjson拡張子が動作しない

移行先のApache環境でjson拡張子が動作しないことが発覚し、その際の対応を説明します。

解決対応
現行システムのHTTP応答ヘッダを確認したところ、jsonが[text/plain]で動作していたので、 Apache側で明示的に設定したら、正常に動作した。

Addtype text/plain json

※jQuery.getでtypeを指定しないと、MIME-Typeによって挙動が違います。

json拡張子が動作しなかった原因

移行前後のmime.typeの違い
原因は、移行前と移行後のmime.typeの値が異なっており、Apache側でAddtypeを指定していなかったので、 OSのmime.type 値を引き継いでしまったことが原因。

・移行前
$ cat /etc/mime.types |grep json
text/plain                               json

・移行後
$ cat /etc/mime.types |grep json
application/json                                json


「text/plain」と「application/json」の違い
.json拡張子ファイルのMIME-Typeが「text/plain」の場合、コールバックに渡ってくるのは文字列となる。
しかし、「application/json」の場合はオブジェクトが渡される。

今後の対応
環境依存しないように、下記いずれかの対策が必要である。
①Jsonファイルの方で、環境に依存しない記述にするか。 ②常にApache側でAddtypeを記述しておき、移行先でも設定を引き継がせる。 ※インフラ担当としては、②の対応をしておくと移行した際に不具合が発生しない。



[サーバ構築の実際がわかる Apache[実践]運用/管理]の書籍横断比較とレビュー

サーバ構築の実際がわかる Apache[実践]運用/管理
著者:鶴長 鎮一
出版日:2012-03-23
出版社:技術評論社

[Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集]の書籍横断比較とレビュー

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集
著者:Ken Coar
出版日:2008-09-26
出版社:オライリージャパン




Google+