脚本格式错误的标题。错误的标头= HTTP / 1.1 302找到

时间:2012-06-27 09:29:05

标签: http cgi

我有一个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

我发现了如何解决这个问题:

  1. 删除HTTP/...
  2. 添加一行Status: 302 Found
  3. 事实上,这正是cgicc::HttpRedirectHeader所做的。我现在有两个问题:

    1. 此行HTTP/1.1 302 Found不符合标准吗?
    2. 如果不是,为什么cgicc::HttpResponseHeader这样做?如果是,为什么我的网络服务器会窒息?
    3. 注意我不是在寻找解决方法,我知道如何做到这一点。我只是想了解最新情况。

      干杯 奥莱

1 个答案:

答案 0 :(得分:6)

HTTP行是标准HTTP,但不是标准CGI。

在CGI下,脚本使用Status标头将状态传回Web服务器,Web服务器根据该状态代码构建HTTP响应行。

为什么cgicc正在构建我不知道的HTTP行 - 您是否可能不应该在该上下文中使用该特定类?也许该类仅用于nph脚本? The documentation确实暗示 - 在描述了一组标准响应类之后,它说:

cgicc :: HTTPResponseHeader是一个功能更强大的通用HTTP头类,用于构建完整的HTTP响应。

这意味着在普通的CGI脚本中使用它是不常见的。

相关问题