编辑
问题与 http header 无关。它是一个在定义之前在 cgi/python 脚本中调用的变量。以防万一其他人也尝试处理类似的错误消息但找不到原因。
我继承了一个基于 apache2/python/cgi 脚本的网站,我正在尝试维护它,但有时我会遇到一些无用的错误。在这种情况下,我得到 The server encountered an internal error or misconfiguration and was unable to complete your request.
单击页面上的元素时。错误日志为我提供了以下信息:
[Fri Jul 28 14:11:15.150877 2017] [http:error] [pid 1727] [client 193.174.111.250:53426] AH02429: Response header name '<!--' contains invalid characters, aborting request
基于类似的question ,我假设错误是很新的,但我找不到问题所在。特别是因为链接/脚本名称保持不变。它在第一次打开网站时有效,但当我单击未将我指向其他网站/脚本的内容时停止工作。这怎么可能是标题的错呢?
以防万一,下面是生成网页开头的代码:
Code = "Content-Type: text/html\n\n"
Code += "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>\n<html>\n"
Code += "<head>\n <title>BACTOME: RELATIVE EXPRESSIONS</title>\n"
...
据我所知,第一行构成了我仅有的 HTTP header 。没有 '<!--'
如错误日志中所述。 header 是否需要其他任何东西才能发挥作用?
PS:或者,如果有任何简单的方法可以将这些一般错误转化为更详细的错误,我也会对此非常感兴趣。
最佳答案
@eorochena 和@dogacan 的回答是特例。一般而言:
如果在 Python CGI 脚本中引发异常,您会收到此错误。
找出问题所在的一个好方法是在 CGI 脚本的开头调用 Python 的 CGI 模块调试辅助函数,如下所示:
cgitb.enable(display=0, logdir=OUTDIR)
哪里OUTDIR
是一个目录名。如果您的 CGI 脚本引发了一些异常,那么 Apache 会将一个 HTML 文件放入该目录。该文件有一些垃圾名称,例如 tmpw4olz3xr.html
,最后它包含包含在 HTML 注释中的 Python 堆栈跟踪 ( <!--
... -->
)。这些信息可以帮助您解决问题。
注意事项:
display=0
参数表示不显示错误详细信息 在浏览器中发送给您的用户。- 你应该注释掉
cgitb.enable(...)
当您确定您的脚本工作正常时。
关于python - Apache2 "Response header name ' <!- -' contains invalid characters, aborting request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375693/