ユーザーがcsvファイルをダウンロードしてExcelなどのアプリケーションで開くことができるように、「ダウンロードリンク」を実装してレポートテーブルの横に配置しようとしていました。
レコードは、ユーザーが行ったクエリに基づいて動的に生成されます。
したがって、コントローラーのどこかに次のようなものがあります。
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)
これは FireFox と Chrome の両方で機能しますが、IE では失敗します。
応答ヘッダーを出力すると、web2py によっていくつかのヘッダーが応答に追加されていることがわかりました:「Expires」、「Cache-Control」など...
そして、次のようにして「Cache-Control」ヘッダーを削除すると:
del response.headers['Cache-Control']
IEで動作します。
そのため、「Cache-Control」が特定の値に設定されているダウンロード可能なファイルを IE で処理する際に問題が発生しているようです。
さて、私の質問は次のとおりです。
なぜweb2pyはこれらの応答ヘッダーを暗黙的に追加するのですか? そして、それを引き立たせる方法がないのでしょうか?
この方法で「Cache-Control」ヘッダーを削除すると、副作用はありますか?
前もって感謝します。