gpt4 book ai didi

python - 在我的服务器中发布基本 HTTP/1.0 200 OK 响应时 Apache 内部服务器错误?绝对打印换行符

转载 作者:可可西里 更新时间:2023-11-01 17:07:44 24 4
gpt4 key购买 nike

打印时出现内部服务器错误:

enter image description here

这是我的代码(python):

print "HTTP/1.0 200 OK\n\r",
print "Content-Type: text/html\n\r",
print "\n\r",

错误日志说:

malformed header from script 'bad_req.py': Bad header: HTTP/1.0 200 OK

我研究了这个问题,但找不到任何解决方案。非常感谢任何帮助。

最佳答案

是的,绝对是错误的行尾。

您应该有“\r\n”,而且,如果您将脚本用作 CGI,则不必担心这一点。

您可以只使用“\n”,一切都会起作用。

此外,我认为 Apache 不会让您选择要使用的协议(protocol),因此您不应该使用第一行:

print "HTTP/1.0 200 OK"
  1. 200 OK 是无论如何都会在成功时返回的状态

  2. 如果您确实需要更改状态,请使用 Status HTTP header ,Apache 会适应它:

    打印“状态:400禁止访问”

你的脚本应该是这样的:

# If you want status :D
print "Status: 200 Some nasty extra status"
print "Content-Type: text/html\n"
# End of headers
print "<h1>Some HTML here</h1>"

请注意,我只在最后一个 header 上使用了“\n”,其他地方都没有。

那是因为 print 会自动添加 "\n"除非你另有说明,但最后一个标题必须用两个新行 "\r\n\r\n"与文档正文分开,这就是为什么你应该只在最后一个标题上使用它。它表示 header 结束。

或者你可以这样做:

print "Content-Type: text/html"
print

不带参数的打印将只打印“\n”,正如我之前所说,Apache 会将它们正确解释为“\r\n”

在您的情况下,您的 header 看起来像这样的 repr:

"""
HTTP/1.0 200 OK

\rContent-Type: text/html

\r
\r

"""

这显然是一个错误的标题。 :D

如果您不使用脚本,因为 CGI 规则可能会略有不同。

如果您必须强制执行 HTTP/1.0 行为,则使用 header 连接 header :

print "Connection: close"

尽管是否关闭连接取决于客户端和 Apache 的超时。我不确定协议(protocol)是否会更改为 HTTP 1.0。默认为 1.1

关于python - 在我的服务器中发布基本 HTTP/1.0 200 OK 响应时 Apache 内部服务器错误?绝对打印换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com