Apache2"响应头名称'<! - '包含无效字符,中止请求"

Lil*_*ina 5 python apache cgi http

编辑

这个问题与http标头无关.它是在定义之前在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

基于类似的问题,我假设错误很新,但我找不到问题.特别是因为链接/脚本名称保持不变.它在第一次打开网站时有效,但是当我点击不引用我不同网站/脚本的内容时它会停止工作.这怎么可能是标题的错?

以防万一,这里是生成网页开头的代码:

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"
...
Run Code Online (Sandbox Code Playgroud)

据我所知,第一行构成了我唯一的HTTP头.'<!--'错误日志中没有说明.标题是否需要其他任何功能?

PS:或者,如果有任何简单的方法将这些通用错误变成更冗长的错误,我也会对此非常感兴趣.

Lar*_*dua 9

@eorochena 和 @dogacan 的回答是特例。一般来说:

如果在 Python CGI 脚本中引发异常,您会收到此错误。

找出问题所在的一个好方法是在 CGI 脚本的开头调用 Python 的 CGI 模块调试辅助函数,如下所示:

cgitb.enable(display=0, logdir=OUTDIR)

哪里OUTDIR是目录名。如果您的 CGI 脚本引发了一些异常,那么 Apache 会将一个 HTML 文件放入该目录中。该文件有一些垃圾名称,例如tmpw4olz3xr.html,并且在其末尾包含包含在 HTML 注释 ( <!--... -->)中的 Python 堆栈跟踪。这些信息将帮助您解决问题。

笔记:

  1. display=0参数意味着错误详细信息不会在浏览器中显示给您的用户。
  2. cgitb.enable(...)当您确定您的脚本工作正常时,您可能应该注释掉 。