python - Apache2 "Response header name ' <!- -' contains invalid characters, aborting request"

标签 python apache http cgi

编辑

问题与 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 堆栈跟踪 ( <!-- ... --> )。这些信息可以帮助您解决问题。

注意事项:

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

关于python - Apache2 "Response header name ' &lt;!- -' contains invalid characters, aborting request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45375693/

相关文章:

http - 不直接导致数据操作但触发操作的 RESTful HTTP 请求是否应该具有 GET、PUT 或 POST 操作?

python - 如何创建 HTTP GET 请求 Scapy?

android - 网络操作和屏幕旋转

python - 查看页面源代码时发现抓取代码

mysql - 如何让 XAMPP 控制面板正确安装和启动服务?

php - 是否可以使用 PHP 重新播放互联网广播? (需要 PHP 大师)

php - PHP 大型上传的内存限制

c# - 基于 C# 套接字的 HTTP

python - DataFrame、应用、lambda、列表理解

python - 在 Visual Studio 下运行 Python 的单元测试总是这么慢吗?