我有一个C ++程序充当CGI脚本,我目前正在使用Cgicc为我做一些解析和格式化(尽管它可能会在某些时候被替换)。在构建我的回复时,我使用cgicc::HttpResponseHeader
,这将创建类似
HTTP/1.1 302 Found
Location: www.bla.com
这对我来说非常标准。但是,网络服务器对此嗤之以鼻,给了我一个
<...> malformed header from script. Bad header=HTTP/1.1 302 Found: script.cgi
我发现了如何解决这个问题:
HTTP/...
行Status: 302 Found
事实上,这正是cgicc::HttpRedirectHeader
所做的。我现在有两个问题:
HTTP/1.1 302 Found
不符合标准吗?cgicc::HttpResponseHeader
这样做?如果是,为什么我的网络服务器会窒息?注意我不是在寻找解决方法,我知道如何做到这一点。我只是想了解最新情况。
干杯 奥莱
答案 0 :(得分:6)
HTTP
行是标准HTTP,但不是标准CGI。
在CGI下,脚本使用Status
标头将状态传回Web服务器,Web服务器根据该状态代码构建HTTP
响应行。
为什么cgicc
正在构建我不知道的HTTP
行 - 您是否可能不应该在该上下文中使用该特定类?也许该类仅用于nph
脚本? The documentation确实暗示 - 在描述了一组标准响应类之后,它说:
cgicc :: HTTPResponseHeader是一个功能更强大的通用HTTP头类,用于构建完整的HTTP响应。
这意味着在普通的CGI脚本中使用它是不常见的。