1. ホーム
  2. jquery

[解決済み] IEにダウンロードを促すのではなく、単にapplication/jsonを表示させるにはどうしたらよいですか?

2022-04-25 06:23:16

質問

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

ASPNETの場合、コーディングミスがあっても、ブラウザでASPNETのダイアグラムを見ることができるので、これはいいことです。

しかし、サーバー側のコードが正しく動作して実際にJSONを返すと、IEはダウンロードを促すので、レスポンスを見ることができません。

IEにそれをさせない、つまり、プレーンテキストと同じように表示させることはできますか?

Content-Typeヘッダを次のように設定すれば、できることは分かっています。 text/plain .

しかし、これは特にASPNET MVCアプリのコンテキストであり、アクションメソッドの1つでJsonResultを使用すると、自動的にレスポンスが設定されるのです。 また、私は適切なcontent-typeを維持し、デバッグ作業をサポートするためにそれを変更しないようにしたいのです。

解決方法は?

答えが見つかりました。

レジストリを更新することで、IE8でブラウザウィンドウにapplication/jsonを表示するように設定することができます。 外部ツールは必要ありません。大まかなテストはしていませんが、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

次に、.reg ファイルをダブルクリックします。 IEを再起動します。 でdocを返すURLをチックしたときに得られる新しい動作は、以下のとおりです。 Content-Type: application/json または Content-Type: text/json はこのようになります。

<イグ

何ができるのか、なぜできるのか。

その 25336920-03F9-11cf-8FD0-00AA00686F13 は、"Browse in place"アクションのCLSIDです。 基本的にこのレジストリエントリは、mimeタイプがapplication/jsonであるドキュメントに対して、単にその場で閲覧するようにIEに伝えているのです。 この動作は <script> タグやXHR経由など。

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でもサポートされていましたが、マイクロソフトがセキュリティ上の理由で無効にしました。