MIME type と HTTPステータスコード

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

MIME type と HTTPステータスコード

投稿記事 by h2so5 » 12年前

HTTPレスポンスの MIME type を text/csv などにしてエラーコード(400 bad Request)などを返すと、
ChromeやFirefoxなどのブラウザは「ファイルが見つかりません」という分かりにくいエラー画面を出してくる。

InternatExplorerだけは随分まともで、「Web ページが見つかりません 」と表示されるものの、HTTPステータスコードを表示してくれるしデバッガでも検出できる。
Safariはそのままbodyの内容を表示するようだ。というかMIME type を解釈してない?

ChromeやFirefoxでは CSV ファイルはダウンロードする設定になっているから、エラーコードを返されるとダウンロードできずどうしようもないのは分かる。
とは言え、404を返した時ならわかるけど、それ以外のエラーコードでも「ファイルが見つかりません」と表示しているのは困る...。
最後に編集したユーザー h2so5 on 2013年1月12日(土) 14:31 [ 編集 1 回目 ]

YuO
記事: 947
登録日時: 14年前

Re: MIME type と HTTPステータスコード

投稿記事 by YuO » 12年前

レスポンスボディがあるなら,Safariのでもいい気がします。
Hypertext Transfer Protocol -- HTTP/1.1 # 10.4 Client Error 4xx
User agents SHOULD display any included entity to the user.
なので,UA自身で処理できないtext/*なレスポンスボディをそのまま表示しても問題ないかと。

手元のIE10 on Win8 (x64, Desktop)はダウンロード開始しました。
localhostでなければ別の扱いかもしれませんが。
まぁ,デバッグ時はFiddlerが常駐していることが多いので,IEでの表示が見えなくても構わなかったりしますが……。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: MIME type と HTTPステータスコード

投稿記事 by h2so5 » 12年前

IE9だとダウンロードは開始されませんでした。Safariが一番分かりやすそうですね。
エラーの時はMIME type を text/pain にしておけば確実にボディを表示してくれるでしょうけど。