IE に application/json をダウンロードするのではなく、単に表示するように説得するにはどうすればよいでしょうか? 質問する

IE に application/json をダウンロードするのではなく、単に表示するように説得するにはどうすればよいでしょうか? 質問する

AJAX を使用する jQuery アプリをデバッグしているときに、サービスからブラウザーに返される json を確認する必要がよくあります。そこで、JSON データの URL をアドレス バーに入力します。

これは ASPNET では便利です。コーディング エラーが発生した場合、ブラウザーで ASPNET 診断を確認できるからです。

代替テキスト

しかし、サーバー側のコードが正しく動作し、実際に JSON を返すと、IE からダウンロードするように要求されるため、応答が表示されません。

代替テキスト

IE でこれを行わないように、つまりプレーンテキストのように表示するようにすることはできますか?

Content-Type ヘッダーを に設定すればこれが実行できることはわかっていますtext/plain

しかし、これは具体的には ASPNET MVC アプリのコンテキストであり、アクション メソッドの 1 つで JsonResult を使用すると、応答が自動的に設定されます。また、デバッグ作業をサポートするためだけにコンテンツ タイプを変更せず、適切なコンテンツ タイプを保持したいと考えています。

ベストアンサー1

答えを見つけました。

レジストリを更新することで、ブラウザ ウィンドウに application/json を表示するように IE8 を設定できます。外部ツールは必要ありません。広範囲にテストしたわけではありませんが、Vista 上の IE8 では動作します。

これを使用するには、レジストリの更新に関する通常の注意事項がすべて適用されることに注意してください。IE を停止します。次に、次の内容を という名前でファイルに切り取って貼り付けますjson-ie.reg

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Content-Type: application/json次に、.reg ファイルをダブルクリックします。IE を再起動します。またはを含むドキュメントを返す URL をティックすると、次の新しい動作が得られますContent-Type: text/json

代替テキスト

何をするのか、なぜ機能するのか:

これは25336920-03F9-11cf-8FD0-00AA00686F13、「その場で参照」アクションの CLSID です。基本的に、このレジストリ エントリは、MIME タイプが application/json であるドキュメントについては、その場で表示するだけであることを IE に伝えます。これは、<script>タグや XHR などを介してダウンロードされた application/json ドキュメントには影響しません。

CLSID キーと Encoding キーには、、、image/gifおよびimage/jpegで使用されるものと同じ値が使用されますtext/html

このヒントはこのサイト、そしてマイクロソフトの記事からInternet Explorer での MIME タイプの取り扱い


FF では、外部アドオンも必要ありません。view-source:疑似プロトコルを使用するだけです。アドレス バーに次のような URL を入力します。

view-source:http://myserver/MyUrl/That/emits/Application/json

この疑似プロトコルは、WinXP-sp2 までは IE でもサポートされていましたが、Microsoft がセキュリティ上の理由でこれを無効にしました。

おすすめ記事