GET响应 - 请勿发送可下载文件

时间:2018-02-08 12:04:10

标签: python http request tornado

我的Python服务器(Tornado)在GET请求上发送csv内容。

我想将响应的内容类型指定为" text / csv",但是当我这样做时,当我在浏览器上发送GET请求时,文件会被下载。

如何指定标题"内容类型:text / csv"没有让它成为可下载的文件,只是在我的浏览器上显示内容?

1 个答案:

答案 0 :(得分:2)

内容类型标题告诉浏览器如何显示给定文件。它不知道如何显示text/csv,因此它别无选择,只能将其视为不透明的下载。如果您希望文件显示为纯文本,则需要告知浏览器它具有内容类型text/plain

如果您需要告诉其他客户端内容类型为text/csv,您需要一些方法来区分理解该内容类型的客户端和不符合该内容类型的客户端。执行此操作的最佳方法是使用Accept请求标头。理解CSV的客户端会在其请求中发送Accept: text/csv,然后服务器会回复内容类型text/plaintext/csv,具体取决于CSV是否出现在接受标头中。

使用Accept标题可能需要对客户端进行修改,这对您来说可能是也可能是不可能的。如果您无法更新客户端以发送Accept标头,那么您将不得不使用hackier解决方法。您可以使用其他网址(添加?type=plain?type=csv),也可以尝试根据用户代理检测浏览器。