HTTPレスポンスの MIME type を text/csv などにしてエラーコード(400 bad Request)などを返すと、
ChromeやFirefoxなどのブラウザは「ファイルが見つかりません」という分かりにくいエラー画面を出してくる。
InternatExplorerだけは随分まともで、「Web ページが見つかりません 」と表示されるものの、HTTPステータスコードを表示してくれるしデバッガでも検出できる。
Safariはそのままbodyの内容を表示するようだ。というかMIME type を解釈してない?
ChromeやFirefoxでは CSV ファイルはダウンロードする設定になっているから、エラーコードを返されるとダウンロードできずどうしようもないのは分かる。
とは言え、404を返した時ならわかるけど、それ以外のエラーコードでも「ファイルが見つかりません」と表示しているのは困る...。
MIME type と HTTPステータスコード
MIME type と HTTPステータスコード
最後に編集したユーザー h2so5 on 2013年1月12日(土) 14:31 [ 編集 1 回目 ]
Re: MIME type と HTTPステータスコード
レスポンスボディがあるなら,Safariのでもいい気がします。
Hypertext Transfer Protocol -- HTTP/1.1 # 10.4 Client Error 4xx
手元のIE10 on Win8 (x64, Desktop)はダウンロード開始しました。
localhostでなければ別の扱いかもしれませんが。
まぁ,デバッグ時はFiddlerが常駐していることが多いので,IEでの表示が見えなくても構わなかったりしますが……。
Hypertext Transfer Protocol -- HTTP/1.1 # 10.4 Client Error 4xx
なので,UA自身で処理できないtext/*なレスポンスボディをそのまま表示しても問題ないかと。User agents SHOULD display any included entity to the user.
手元のIE10 on Win8 (x64, Desktop)はダウンロード開始しました。
localhostでなければ別の扱いかもしれませんが。
まぁ,デバッグ時はFiddlerが常駐していることが多いので,IEでの表示が見えなくても構わなかったりしますが……。
Re: MIME type と HTTPステータスコード
IE9だとダウンロードは開始されませんでした。Safariが一番分かりやすそうですね。
エラーの時はMIME type を text/pain にしておけば確実にボディを表示してくれるでしょうけど。
エラーの時はMIME type を text/pain にしておけば確実にボディを表示してくれるでしょうけど。