【问题标题】:How to set http headers with different content type如何设置具有不同内容类型的 http 标头
【发布时间】:2012-05-30 11:21:52
【问题描述】:

我有一个通过 Python 动态创建的网页。它的目的是提供图片,所以第一行设置内容类型:

Content-Type: image/png

我想设置http头,特别是缓存控制,但我不太确定内容类型不是html,所以我确定我不能把html样式的头放进去。

编辑:代码开始简单:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import string, sys, math, os
print("Content-Type: image/png\n")

【问题讨论】:

  • 您使用的是什么框架/库?答案完全取决于该信息。 (一旦拥有它就很容易发现。)
  • 该页面位于 Apache 2.2 服务器上,通过 Python 2.7.1 创建,没有扩展或模块
  • 您能否提供一个包含相关导入/调用的代码 sn-p?
  • 我将代码的开头添加到问题中

标签: python html http header http-headers


【解决方案1】:

Cache-Control、Content-Type 等是 HTTP 标头,而不是“html 样式标头”。无论内容类型如何,您都可以使用它们。

【讨论】:

  • 啊,我明白了,我很傻,并且忽略了 Content-Type 是 http 标头的事实,我认为标头必须放在 html 头中。我已经通过在第一行用分号分隔的额外标题来修复代码。谢谢。
  • @Arty-fishL 你的意思是 Python 代码中的分号?你不需要这样做。您可以将打印语句放在单独的行上。你的网络服务器并不关心你如何格式化你的代码。它只关心其输出的格式。首先,您需要 HTTP 标头的“名称:值”行、一个空行,然后是内容的正文。同样,这是 输出 的格式,而不是 Python 代码的格式。
【解决方案2】:
import string, sys, math, os
print("Cache-Control: max-age=" + str(86400 * 3650) + ", public")
print("Content-Type: image/png")
print("\n")

这会将资源设置为十年后到期。

【讨论】:

  • 它的 CGI,而不是整个网络服务器(它在 heliohost.org 服务器上运行),我将把代码的开头放在问题中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多