mod_python.publisher始终返回内容类型为'text/plain

0 投票
1 回答
2065 浏览
提问于 2025-04-11 21:10

我刚刚在Apache上设置了mod python,现在想让一个简单的脚本运行起来,但当我打开页面时,所有的HTML都变成了普通文本显示。我觉得这是mod_python.publisher的问题,也就是我设置的处理程序。我查看了它的源代码,发现有一行代码是用来区分'text/plain'和'text/html'的,它会在输出的文件最后一百个字符中查找',所以我在我的脚本里加上了这个字符,但还是不行。我甚至尝试注释掉一些代码,让publisher把所有内容都设置为'text/html',但刷新页面后还是一样的结果。可能是我设置错了什么。

这是我在httpd.conf中的配置

< Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
SetHandler mod_python
PythonHandler mod_python.publisher
PythonDebug On
< /Directory >

1 个回答

3

你的配置看起来没问题:我有一个正常工作的mod_python.publisher脚本,设置基本上和你的一样。

还有一些其他的想法:

  • 当你尝试编辑发布者的源代码时,有重启你的网页服务器吗?因为服务器启动时只会加载一次Python库。

  • 发布者的自动检测会查找一个结束的HTML标签:</html>。你添加的是这个吗?(我在你的问题中没看到,但可能是你发的时候被删掉了。)

  • 如果其他方法都不行,你可以明确设置内容类型。这需要写更多的代码,但可以确保它始终有效。把请求中的content_type字段设置为'text/html'。

例如,如果你的脚本现在是这样的:

def index(req, an_arg='default'):
    return some_html

那么它会变成:

def index(req, an_arg='default'):
    req.content_type = 'text/html'
    return some_html

撰写回答