阿帕奇2 "Response header name '<!--' contains invalid characters, aborting request"
Apache2 "Response header name '<!--' contains invalid characters, aborting request"
编辑
问题与 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,我假设错误是很新的,但我找不到问题所在。特别是因为 link / 脚本名称保持不变。它在第一次打开网站时有效,但当我单击不指向其他 site/script 的内容时停止工作。这怎么能是header的错呢?
以防万一,这里是生成网页开头的代码:
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:或者,如果有任何简单的方法可以将这些一般性错误转化为更详细的错误,我也会对此非常感兴趣。
在我的例子中,问题是打印语句输出的对齐方式
之前:
try:
if <some-condition>
message = "%s" % filename
else:
message = "file not found"
print """\n
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
except Exception as e:
print e
之后:
try:
if <some-condition>:
message = "%s" % filename
else:
message = "file not found"
print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
except Exception as e:
print e
同样的错误,在类似的打印案例中,是由于数据库整理;将其更改为 UTF-8 对我有帮助。
@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(...)
当您确定您的脚本工作正常时。
目的
我认为使用 cgitb 的目的是从 Web 浏览器获取全部信息以帮助 debugging.So 我们应该纠正问题,而不是避免问题。
做一些研究
我们来看一下资料:
AH02429: Response header name '<!--' contains invalid characters, aborting request
它表示 header 名称包含无效字符,因此我对 cgitb.py 代码进行了一些研究,如下所示:
def reset():
"""Return a string that resets the CGI and browser to a known state."""
return '''<!--: spam
Content-Type: text/html
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font>'''
这个函数returns字符<!--
。但是 apache httpd 将其视为不应包含 <!--
的响应 header 名称。
python.
的 Issue Tracker 中也有一个开放的 issue8704
可能不是一个好的解决方案
我不知道我们应该删除cgitb.py中的代码还是调整apache httpd的配置。我的解决方案是删除一些代码如下:
return '''
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font>'''
然后就很好用了,很好view.Anyone知道在ngix是什么情况吗?
编辑
问题与 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,我假设错误是很新的,但我找不到问题所在。特别是因为 link / 脚本名称保持不变。它在第一次打开网站时有效,但当我单击不指向其他 site/script 的内容时停止工作。这怎么能是header的错呢?
以防万一,这里是生成网页开头的代码:
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:或者,如果有任何简单的方法可以将这些一般性错误转化为更详细的错误,我也会对此非常感兴趣。
在我的例子中,问题是打印语句输出的对齐方式
之前:
try:
if <some-condition>
message = "%s" % filename
else:
message = "file not found"
print """\n
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
except Exception as e:
print e
之后:
try:
if <some-condition>:
message = "%s" % filename
else:
message = "file not found"
print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
except Exception as e:
print e
同样的错误,在类似的打印案例中,是由于数据库整理;将其更改为 UTF-8 对我有帮助。
@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(...)
当您确定您的脚本工作正常时。
目的
我认为使用 cgitb 的目的是从 Web 浏览器获取全部信息以帮助 debugging.So 我们应该纠正问题,而不是避免问题。
做一些研究
我们来看一下资料:
AH02429: Response header name '<!--' contains invalid characters, aborting request
它表示 header 名称包含无效字符,因此我对 cgitb.py 代码进行了一些研究,如下所示:
def reset():
"""Return a string that resets the CGI and browser to a known state."""
return '''<!--: spam
Content-Type: text/html
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font>'''
这个函数returns字符<!--
。但是 apache httpd 将其视为不应包含 <!--
的响应 header 名称。
python.
可能不是一个好的解决方案
我不知道我们应该删除cgitb.py中的代码还是调整apache httpd的配置。我的解决方案是删除一些代码如下:
return '''
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font>'''
然后就很好用了,很好view.Anyone知道在ngix是什么情况吗?