【问题标题】:HTTP Server & CGI ProcessingHTTP 服务器和 CGI​​ 处理
【发布时间】:2012-09-18 15:25:14
【问题描述】:

我有一个家庭作业,我应该编写一个 http 服务器,该服务器应该处理在我的 index.html 页面上的表单中给出的输入。为此,我有一个使用 POST 操作并链接到 cgi 文件的表单。我遇到的问题是链接到我的 cgi 文件。我的索引文件和 cgi 文件在同一个文件夹中,所以我的表单看起来像这样:

    <form action="test.cgi" method="POST">
    Username: <input type="text" name="user" />
    <input type="submit" value="Submit" />
  </form> 

当我连接到我的服务器时,我连接到:localhost:PORT,它给了我索引文件,当我点击提交按钮时,我链接到 localhost:PORT/test.cgi

在我看来,这应该直接将我链接到我的 cgi 文件,并且一切正常。我知道这一定是因为我不明白服务器如何组织我电脑上的文件。有人可以向我解释这是如何工作的吗?

如果我没有发布一些重要信息,请告诉我,我会尽快编辑帖子。

【问题讨论】:

  • 我怀疑您不是在编写“http 服务器”,而只是一个 cgi 脚本,是吗?
  • 好吧,如果您编写了服务器,那么您的工作就是尽可能多地调试它,并告诉我们哪些代码没有按预期运行。如果不是你写的,那么你在帖子中留下了很多重要信息。
  • @BrianRoach 我实际上正在编写一个 http 服务器以及一个 cgi 脚本。

标签: c http cgi


【解决方案1】:

由于您正在编写 HTTP 服务器,因此您可以定义 CGI 处理的“规则”:-)

例如,Apache 默认要求将 CGI 脚本放置在 cgi-bin 目录中以启用它们的执行。这一切都可以通过 httpd.conf 进行配置——因此用户可以禁用 CGI 或通过配置文件为 CGI 脚本指定另一个目录——你可以选择做类似的事情。

另请注意,CGI 文件的文件扩展名通常是 test.pl(用于 perl 脚本),服务器通常会执行指定脚本文件的 fork/exec

http://httpd.apache.org/docs/2.0/howto/cgi.html 是一个很好的参考

【讨论】:

  • 好吧,听起来我必须为我的服务器上的 CGI 处理定义所有“规则”。另外我知道对于 CGI 文件来说 perl 或 python 脚本会更容易,但分配特别希望所有事情都在 c 中完成,这使得一切都变得更加复杂
  • 您的 Web 服务器将使用 C 语言,但它通常会执行 perl 进程或其他可以理解您的服务器期望用户编写 CGI 脚本的脚本语言的进程 - 作为 Web 服务器,您的 C 代码只负责执行 cgi 脚本并管理其输出、生命周期 - 脚本本身就是 Web 服务器的黑匣子
猜你喜欢
  • 1970-01-01
  • 2014-03-18
  • 2016-09-14
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
相关资源
最近更新 更多