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

Ole*_*Ole 6 cgi http

我有一个C++程序充当CGI脚本,我目前正在使用Cgicc为我做一些解析和格式化(虽然它可能会在某些时候被替换).在构建我的响应时,我会使用cgicc::HttpResponseHeader,这将创建类似的东西

HTTP/1.1 302 Found
Location: www.bla.com
Run Code Online (Sandbox Code Playgroud)

这看起来很标准.然而,Web服务器对此感到窒息,给了我一个

<...> malformed header from script. Bad header=HTTP/1.1 302 Found: script.cgi
Run Code Online (Sandbox Code Playgroud)

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

  1. 删除该HTTP/...
  2. 添加一条线 Status: 302 Found

事实上,这正是这样cgicc::HttpRedirectHeader做的.我现在有两个问题:

  1. 这条线HTTP/1.1 302 Found不标准吗?
  2. 如果不是,为什么cgicc::HttpResponseHeader这样做?如果是,为什么我的网络服务器会窒息?

注意我不是在寻找解决这个问题的方法,我知道如何做到这一点.我只想了解最新情况.

干杯Ole

Ric*_*dle 6

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

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

为什么cgicc要构造HTTP我不知道的行 - 你是否可能不应该在该上下文中使用该特定类?也许该类仅用于nph脚本? 文档有点暗示 - 在描述了标准响应类的集合之后,它说:

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

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