6

我有一个作为 CGI 脚本的 C++ 程序,我目前正在使用 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

事实上,这正是cgicc::HttpRedirectHeader它的作用。我现在有两个问题:

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

注意我不是在寻找解决这个问题的方法,我知道该怎么做。我只是想了解发生了什么。

干杯奥莱

4

1 回答 1

7

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

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

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

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

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

于 2012-06-27T09:37:35.627 回答